如何解决Chrome 85服务人员无法尝试安装
在我的Web应用程序上更新chrome 85之后,Service Worker不再安装。在chrome 84或更早版本,Safari,Firefox,Microsoft Edge浏览器上可以正常使用。
试图找到变更日志或错误报告,但是没有明确的提示可以阻止它。服务人员等待了很长一段时间后,最终以错误(1)结束,在控制台中,我看到许多请求处于待处理/已停止状态。
但是状态为待定的那些url具有路径信息而不是静态资源,例如:
为了复制:
1.Register a service worker with global scope
navigator.serviceWorker.register('/ServiceWorker.js',{ scope: '/',updateViaCache: 'none' }).then(function (registration) {
});
2. Attach install event which looks like
self.addEventListener('install',function(event) {
event.waitUntil(
caches.open(cacheName).then(function(cache) {
return cache.addAll(
[
'/css/bootstrap.css','/css/main.css','/js/bootstrap.min.js','/js/jquery.min.js','/offline.html','/path/subpath/par1/par2'
'/path/subpath/par1/par3'
'/path/subpath1/par4/par5'
]
);
})
);
});
3. Following request url (non static resources) will never complete and install will stuck on trying to install and eventully,in error/redudndant.
'/path/subpath/par1/par2'
'/path/subpath/par1/par3'
'/path/subpath1/par4/par5'
这些是我唯一注意到的发现。
有任何线索吗? chrome 85服务人员/提取api中发生的更改会导致此行为。
解决方法
因此,在尝试了所有方法之后,我着手研究了Chrome浏览器的源代码,并发现由于某种原因在安装Service Worker时默认情况下启用了请求限制,并且该限制也最多可容纳3个请求。
在我们的情况下,这种限制导致请求进入停止状态并停留在尝试安装状态,最终导致冗余错误。
没有可用于禁用限制的标志,因此我决定使用cache.add代替cache.addAll与 履行所有诺言,并保证它奏效。似乎这种方式不会达到最大并发请求,并且安装可以继续。
无法报告铬的错误,但希望某些项目成员可以对此进行调查,至少即使他们节流了,也可以使其恢复。
希望这会暂时帮助他人。
,我发现了同样的问题,并使用“ cache.addAll”确认了3个请求的限制。
似乎与缓存控件有关。我从Cache-Control删除了“ no-store”选项后解决了这个问题。
以前:
Header set Cache-Control "no-cache,no-store,must-revalidate"
Chrome 85之后:
Header set Cache-Control "no-cache,must-revalidate"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。