service worker 发出多个请求来缓存资源

Multiple requests are being made from service worker to cache a resource

因为我正在构建渐进式网络应用程序。我们正面临 service worker 的奇怪行为。

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 附加了一个 cache-busting header 现在对其预缓存请求进行处理,这意味着它们将始终针对网络而不是 HTTP 浏览器缓存。即将发布的 sw-precache 4.0.0 版本,您现在可以通过 master 分支,有一个新的 dontCacheBustUrlsMatching option,它允许您 opt-out of cache-busting 对于您通过文件名明确版本控制的资源。使用该选项意味着额外的 sw-precache 填充其缓存的请求将通过 HTTP 浏览器缓存完成,跳过网络访问。)