假設您在PWA更新期間切斷網絡並刷新緩存失敗。該應用程序處於什麼狀態?在刷新時,一些應用程序文件將被更新,而另一些則不是?當連接返回時,它會再試一次嗎?多久?多少次?如果網絡在服務工作者緩存更新上失敗,我會刷新PWA嗎?
0
A
回答
0
這取決於如何實施服務人員。
我推薦的一種常見模型是在install
事件期間照顧添加到緩存中,並注意在activate
事件期間從緩存中刪除。
如果緩存中添加是在install
事件的event.waitUntil()
裏面包裹着,而那些增加的一個拋出異常(由於網絡故障,或其他一些問題),那麼新的(或更新)服務工作者的安裝將被視爲失敗。服務人員以前的版本(如果有的話)將繼續使用。下一次導航到服務工作人員範圍內的頁面時,將對新服務工作人員觸發新的install
事件,並且會再次有機會執行其緩存添加。
如果你只清理了activate
事件緩存,那麼你不必擔心什麼時候安裝失敗,被刪除以前緩存條目,因爲activate
事件不會被解僱,除非install
過程是成功的。 (您的服務工作人員可能會在waiting
狀態最終在install
和activate
之間被解僱,這取決於是否有其他選項卡使用舊版本的服務人員的開放,以及是否不叫self.skipWaiting()
)
有更多信息,示例代碼和圖表https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#updates
相關問題
- 1. 如何更新PWA中的服務工作者緩存?
- 2. 服務工作者和透明緩存更新
- 3. 服務工作者緩存
- 4. PWA與@角度/服務工作者包
- 5. 刷新我的訪問者緩存
- 6. MyBatis - 緩存刷新後嵌套結果不會更新
- 7. Web服務 - 緩存更新
- 8. Facebook緩存不會刷新?
- 9. Chrome緩存不會在我的網站上更新
- 10. ServiceStack網絡服務緩存
- 11. 服務工作者高速緩存
- 12. Exchange網絡服務 - 更新任務
- 13. Ajax表單有時候工作,有時會工作和刷新,有時會刷新並失敗... Bwah?
- 14. jqGrid更新在子網格中的行不刷新緩存
- 15. Azure co-located緩存會話狀態(實例失敗/更新)
- 16. Angular 2網站頁面刷新在localhost上工作,但在活動服務器上刷新顯示404錯誤
- 17. SQL服務器更新查詢失敗
- 18. flywaydb:MView刷新失敗
- 19. 用戶可以清除服務工作者緩存嗎?
- 20. 更新一個mercurial網絡服務器
- 21. 服務工作者多久刷新一次?
- 22. 歷史API刷新失敗刷新
- 23. 更新值後圖表不會刷新(甚至是緩存的)
- 24. 服務工作者抓取事件不會觸發沒有下一次刷新
- 25. 更新網頁的緩存時更新我的網頁
- 26. MSSQL更新工作,但插入失敗
- 27. Android工作室更新失敗
- 28. 服務人員:如何更新服務器上的文件更改緩存?
- 29. 測試緩存失效,並刷新
- 30. 刷新LRU緩存