2017-09-26 101 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相關的東西錯了,完全博克你的網站:)