UPD 22.02.2019 https://bugs.chromium.org/p/chromium/issues/detail?id=934386
我正在广泛测试缓存服务工作者,有时确实会收到服务工作者提供的js / css文件的net::ERR_CONNECTION_RESET 200 (OK)
错误。
我正在使用 Workbox 3.6.3
复制步骤:
GET https://dev-host.com/client/build/_/12.js net::ERR_CONNECTION_RESET 200 (OK)
浏览器中会发生什么:
script
标签加载,并插入到网页的head
标签中。所有这些都是通过requireEnsure
函数从webpack-https://gist.github.com/chestozo/acd651382f9590988d4679f8dbb21d19生成的manifest.js脚本中完成的。script
标签发起的第一个请求被插入head
在这里您可以看到文件请求被工作箱拦截:
这就是我的服务工作者脚本的样子,sw.js
:
workbox.skipWaiting();
workbox.clientsClaim();
workbox.routing.registerRoute(
new RegExp(reRuntimeStatic),
workbox.strategies.cacheFirst({
cacheName: CACHE_NAMES.STATIC,
plugins: [
new workbox.cacheableResponse.Plugin({
statuses: [ 200 ]
}),
new workbox.expiration.Plugin({
maxAgeSeconds: 5 * 60 * 60 * 24,
maxEntries: 100
})
]
}),
'GET'
);
self.__precacheManifest = [].concat(cacheConfig.precache || []);
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
有什么想法吗?