2017-10-18 55 views

回答

0

這取決於如何實施服務人員。

我推薦的一種常見模型是在install事件期間照顧添加到緩存中,並注意在activate事件期間從緩存中刪除。

如果緩存中添加是在install事件的event.waitUntil()裏面包裹着,而那些增加的一個拋出異常(由於網絡故障,或其他一些問題),那麼新的(或更新)服務工作者的安裝將被視爲失敗。服務人員以前的版本(如果有的話)將繼續使用。下一次導航到服務工作人員範圍內的頁面時,將對新服務工作人員觸發新的install事件,並且會再次有機會執行其緩存添加。

如果你只清理了activate事件緩存,那麼你不必擔心什麼時候安裝失敗,被刪除以前緩存條目,因爲activate事件不會被解僱,除非install過程是成功的。 (您的服務工作人員可能會在waiting狀態最終在installactivate之間被解僱,這取決於是否有其他選項卡使用舊版本的服務人員的開放,以及是否不叫self.skipWaiting()

有更多信息,示例代碼和圖表https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#updates