0

当我致力于构建渐进式网络应用程序时。我们正面临服务工作者的奇怪行为。

1. Clear cache and unregister service worker
2. Go to www.example.com
3. Examine the network calls for resources (JS/CSS)

预期结果:只有一个网络请求应该针对一个资源。

实际结果:为每个资源发出两个网络请求 [屏幕截图[1]

4

1 回答 1

6

您在sw-precache获取资源以填充其缓存时所看到的内容。这与受控页面发出的初始请求无关。这是一个相当常见的模型,无论您是否使用sw-precache.

(顺便说一句,我看到您明确地对 JS 和 CSS 资源进行版本控制,这很棒。您会注意到sw-precache现在在其预缓存请求中附加了一个缓存破坏标头,这意味着它们将始终与网络而不是 HTTP 浏览器缓存。即将发布的 4.0.0 版本(sw-precache您现在可以通过master分支使用)有一个新dontCacheBustUrlsMatching选项,它允许您为明确版本控制的资源选择退出缓存清除文件名。使用该选项意味着sw-precache填充其缓存的附加请求将通过 HTTP 浏览器缓存完成,从而跳过网络之旅。)

于 2016-06-28T14:57:39.933 回答