如何取消注册并删除旧的服务人员?
问题描述:
我已经使用.register注册了一个service woker,并且可以在开发工具的Application选项卡中看到。现在我的问题是如何取消注册这个服务人员。如何取消注册并删除旧的服务人员?
我已经运行此脚本
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
console.group('====SW registration=======');
navigator.serviceWorker.register('/sw.js', {scope: './'}).then(function(registration) {
console.log('SW registratered successfully');
console.log(registration);
registration.unregister().then(function(result) {
console.log('Unregistered done', result);
});
}).catch(function(error){
console.error('sw registration failed', error);
});
console.groupEnd();
});
}
但我看到,通过这样做,我们实际上是在第一个注册的服务人员,然后注销它。这对我来说似乎不是正确的方式。
或者,我可以点击从开发工具应用附近的服务人员注销链接>服务人员并点击应用>清除存储和重新打开URL的新标签。
,但是当我检查过铬:// serviceworker-内部/
它在列表的底部显示旧的和未注册服务人员名单(见图片)
那么为什么我在这里看到多余的服务人员名单呢?何时更新?这是否是Chrome浏览器的默认行为?
答
您应该指定为什么要取消注册服务工作者。
我想有两种可能:
- 你想摆脱掉的/service-worker.js文件并删除SW完全
- 你想有一个新的/更新SW和更换前一个
第一种情况: 结帐这样的回答:How do I uninstall a Service Worker?
情况二: 您不必注销旧的SW,只需更新/service-worker.js中的代码并将其注册到旧的SW。这是通常的情况。新的updatet软件将接管,过时的将会消失。 我建议你仔细阅读这些教程: https://developers.google.com/web/fundamentals/instant-and-offline/service-worker/lifecycle https://developers.google.com/web/fundamentals/getting-started/primers/service-workers
我强调仔细因为它很容易得到SW相关的东西错了,完全博克你的网站:)