如何注销和删除旧服务人员?

diE*_*cho 0 google-chrome-devtools service-worker

我已经使用.register注册了一个服务woker,可以在开发工具的“应用程序”选项卡中看到。现在我的问题是如何注销此服务工作者。

我已经运行了这个脚本

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();
        });
}
Run Code Online (Sandbox Code Playgroud)

但是我看到这样做,实际上是在先注册服务工作者,然后再取消注册。这对我来说似乎不是正确的方法。

或者,我可以从开发工具“ 应用程序”>“服务工作者”中单击服务工作者附近的注销链接,还可以单击“ 应用程序”>“清除存储”,然后在新选项卡中重新打开URL。

但是当我通过chrome:// serviceworker-internals /查看时

它在列表的底部显示旧的和未注册的服务人员的列表(参见图片)

未注册的软件

那么,为什么在这里看到冗余服务人员列表?什么时候更新?这是chrome浏览器的默认行为吗?

pat*_*ate 5

您应该指定为什么要注销服务工作者。

我想有两种可能性:

  • 您想摆脱/service-worker.js文件并完全删除SW
  • 您想要一个新的/更新的软件并替换以前的软件

第一种情况:签出此答案:如何卸载Service Worker?

第二种情况:您不必注销旧的SW,只需在/service-worker.js中更新代码并将其注册在旧SW之上。这是通常的情况。新的更新的SW将接管,过时的将消失。我建议您非常仔细地阅读这些教程:https : //developers.google.com/web/fundamentals/instant-and-offline/service-worker/lifecycle https://developers.google.com/web/fundamentals/getting-开始/入门/服务工作者

我要特别强调因为很容易弄错与SW相关的东西,并使您的网站完全瘫痪:)