2017-09-26 108 views
0

我已经使用.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-内部/

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

unregistered sw

那么为什么我在这里看到多余的服务人员名单呢?何时更新?这是否是Chrome浏览器的默认行为?

回答

1

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

我想有两种可能:

  • 你想摆脱掉的/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相关的东西错了,完全博克你的网站:)