当我致力于构建渐进式网络应用程序时。我们正面临服务工作者的奇怪行为。
1. Clear cache and unregister service worker
2. Go to www.example.com
3. Examine the network calls for resources (JS/CSS)
预期结果:只有一个网络请求应该针对一个资源。
实际结果:为每个资源发出两个网络请求 [
当我致力于构建渐进式网络应用程序时。我们正面临服务工作者的奇怪行为。
1. Clear cache and unregister service worker
2. Go to www.example.com
3. Examine the network calls for resources (JS/CSS)
预期结果:只有一个网络请求应该针对一个资源。
实际结果:为每个资源发出两个网络请求 [
您在sw-precache
获取资源以填充其缓存时所看到的内容。这与受控页面发出的初始请求无关。这是一个相当常见的模型,无论您是否使用sw-precache
.
(顺便说一句,我看到您明确地对 JS 和 CSS 资源进行版本控制,这很棒。您会注意到sw-precache
现在在其预缓存请求中附加了一个缓存破坏标头,这意味着它们将始终与网络而不是 HTTP 浏览器缓存。即将发布的 4.0.0 版本(sw-precache
您现在可以通过master
分支使用)有一个新dontCacheBustUrlsMatching
选项,它允许您为明确版本控制的资源选择退出缓存清除文件名。使用该选项意味着sw-precache
填充其缓存的附加请求将通过 HTTP 浏览器缓存完成,从而跳过网络之旅。)