Google chrome devtools 如何注销和删除旧的服务人员?

Google chrome devtools 如何注销和删除旧的服务人员?,google-chrome-devtools,service-worker,Google Chrome Devtools,Service Worker,我已经使用.register注册了一个服务工作器,可以在开发工具的应用程序选项卡中看到。现在我的问题是如何注销此服务人员 我已经运行了这个脚本 if ('serviceWorker' in navigator) { window.addEventListener('load', function() { console.group('====SW registration======='); navigator.se

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

我已经运行了这个脚本

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();
        });
}
但我看到,通过这样做,我们实际上是先注册服务人员,然后注销它。对我来说,这似乎不是正确的方法

或者,我可以单击dev tools Application>service Workers中服务人员附近的注销链接,还可以单击Application>Clear Storage并在新选项卡中重新打开URL

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

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


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

您应该指定取消注册服务人员的原因

我认为有两种可能性:

  • 您希望删除/service-worker.js文件并完全删除软件
  • 您希望有一个新的/更新的软件并替换以前的软件
第一种情况: 检查此答案:

第二种情况: 您不必注销旧软件,只需更新/service-worker.js中的代码并在旧软件上注册即可。这是通常的情况。新的updatet软件将接管,过时的软件将消失。 我建议您仔细阅读这些教程:


我非常小心地强调,因为软件相关的东西很容易出错,并完全破坏你的网站:)

下面的链接可能会帮助你解决问题

堆栈溢出链接:

链接:

如果要更新服务人员代码,请使用

下面的代码将删除service worker(注销它)

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.getRegistrations()
        .then(function(registrations) {
            for(let registration of registrations) {
               if(registration.active.scriptURL == 'http://localhost/my-push/myworker.js'){ registration.unregister(); }
            }
        });
}