我有一个非常简单的服务工作者来添加离线支持。获取处理程序看起来像
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_CONNECTION_RESET错误。当服务工作者从浏览器缓存中获取文件时,错误不是来自服务器。 Chrome的网络标签显示服务工作者已成功从磁盘缓存中获取文件,但浏览器向服务工作者发出的请求显示为(失败)
是否有人知道造成此问题的根本问题?我的服务工作者实施有问题吗?
答案 0 :(得分:0)
这很可能是由于Chrome(以及其他浏览器)中的错误可能导致垃圾回收事件在仍被读取时删除了对响应流的引用。
正在https://bugs.chromium.org/p/chromium/issues/detail?id=934386跟踪其在Chrome中的修复程序。