Google chrome 网络::在Chrome中使用服务工作者重置错误连接

Google chrome 网络::在Chrome中使用服务工作者重置错误连接,google-chrome,service-worker,Google Chrome,Service Worker,我有一个非常简单的服务人员来添加离线支持。获取处理程序看起来像 self.addEventListener("fetch", function (event) { var url = event.request.url; event.respondWith(fetch(event.request).then(function (response) { //var cacheResponse: Response = response.clone(); //caches.op

我有一个非常简单的服务人员来添加离线支持。获取处理程序看起来像

self.addEventListener("fetch", function (event) {
  var url = event.request.url;
  event.respondWith(fetch(event.request).then(function (response) {
    //var cacheResponse: Response = response.clone();
    //caches.open(CURRENT_CACHES.offline).then((cache: Cache) => {
    //  cache.put(url, cacheResponse).catch(() => {
    //    // ignore error
    //  });
    //});
    return response;
 }).catch(function () {
    // check the cache
    return getCachedContent(event.request);
}));
}))

对于联机时加载到页面中的特定脚本,我们会间歇性地看到net::ERR\u CONNECTION\u RESET错误。该错误不是来自服务器,因为服务人员正在从浏览器缓存中提取文件。Chrome的“网络”选项卡显示服务人员已成功从磁盘缓存中获取文件,但浏览器向服务人员发出的请求显示为(失败)


有人知道导致这种情况的根本原因吗?我的service worker实现有问题吗?

这可能是由于Chrome(可能还有其他浏览器)中的错误导致垃圾收集事件在仍在读取响应流时删除对响应流的引用


它在Chrome中的修复程序正在跟踪。

我认为这与您的服务人员无关。您能否确认在Incognito窗口中看到相同的行为,该窗口将具有新的浏览器缓存并禁用所有扩展?我在使用Incognito时遇到同样的问题。如果我删除服务人员,它也会停止发生。在低速网络上的大型脚本文件中,这种情况似乎最为常见(在dev工具中,将网络设置为减慢3G速度会使这种情况几乎一直发生)。我已经通过分解一些文件并在需要时注入脚本标记来重新加载脚本,从而减少了它的影响