在我的漸進式Web應用程序中,我應該使用靜態資產的服務工作者中的緩存API,還是應該只依靠瀏覽器的原生緩存控制?有什麼不同?使用Service Worker Cache API和常規瀏覽器緩存有什麼區別?
23
A
回答
13
服務工作者緩存API的一個主要優點是它比內置瀏覽器緩存提供更多的詳細控制。例如,您的服務人員可以在用戶第一次運行您的Web應用程序(包括他們尚未訪問的資產)時緩存多個請求。這將加速後續請求。您也可以實施自己的緩存控制邏輯,確保將被認爲重要的資產保存在緩存中,同時刪除使用不足的數據。
0
主要區別在於控制。瀏覽器緩存驅動掉緩存控制頭,這是好的,直到它沒有。有各種策略來管理如何緩存網絡可尋址資源;私人,公共;生存時間等。
通過服務人員緩存,您可以以編程方式控制這些資產的持續保存方式。但這意味着你的負擔。
瀏覽器緩存是我認爲不可靠的。瀏覽器將根據設備存儲可用性自動清除資產。例如,iPhone用於忽略超過25kb的任何資源的緩存。今天,我認爲他們只是非常積極。
我知道Facebook團隊幾年前做了一項研究,發現只有25%的文件是基於標頭緩存的,他們期望瀏覽器緩存這些文件。這意味着有額外的網絡流量和服務器活動。
這就是爲什麼服務人員緩存是更好的選擇。不要去掉你的緩存標題,只是不要依賴它們。
相關問題
- 1. AIR和瀏覽器有什麼區別?
- 2. 瀏覽器中的本地存儲和緩存有什麼區別?
- 3. magento緩存管理中的「Flush Magento Cache」和「Flush Cache Storage」有什麼區別?
- 4. HTML5 AppCache和普通瀏覽器緩存之間有什麼區別?
- 5. 常規的Rails應用程序和Rails API有什麼區別?
- 6. 客戶端緩存和服務器緩存有什麼區別
- 7. $ .cache和$ .data之間有什麼區別?
- 8. 有什麼區別Expires和Cache-control:max-age?
- 9. 爲什麼瀏覽器不能使用Cache-Control HTTP頭緩存資源?
- 10. 緩存和共享有什麼區別?
- 11. Docker Service和Docker Container有什麼區別?
- 12. 'service'和'server'有什麼區別?
- 13. Service和IntentService有什麼區別?
- 14. AJAX請求和常規瀏覽器請求之間的區別
- 15. Gecko支持的瀏覽器和Webkit支持的瀏覽器有什麼區別?
- 16. vim中的緩衝區和寄存器有什麼區別?
- 17. CLR Worker線程和Worker線程有什麼區別?
- 18. 瀏覽器擴展和瀏覽器幫助對象有什麼區別
- 19. 適用於非IE瀏覽器的瀏覽器緩存API
- 20. 瀏覽器請求和Ajax請求有什麼區別?
- 21. Android和Chrome瀏覽器之間的Chrome有什麼區別?
- 22. 「瀏覽器發佈」和「程序發佈」有什麼區別?
- 23. 瀏覽器'首選項'和'所需功能'有什麼區別?
- 24. cpu緩存和內存緩存有什麼區別
- 25. 緩存控制中的no-cache和no-store之間有什麼區別?
- 26. 瀏覽器中完成和繼續有什麼區別?
- 27. Zf2 $ cache-> addItem和$ cache-> setItem之間的緩存區別
- 28. HDF5:「文件緩衝區」和「文件緩存」有什麼區別?
- 29. 休眠緩存和Spring遠程緩存有什麼區別?
- 30. 瀏覽器引擎和渲染引擎有什麼區別?
與此相關的一條評論。如果使用緩存標頭緩存頁面上的元素,用戶觸發刷新將使瀏覽器跳過HTTP緩存。 SW提取事件將總是攔截一個請求,意味着您可以隨時從緩存中提供服務,如果您願意的話。 –
@GauntFace事實上,它不僅僅是一個明確的「刷新」的開放標籤。隱式「刷新」(如將頁面加載到新選項卡中)將失敗,如果頁面緩存了標題並且設備處於脫機狀態。 –