基於 react-creat-app 中 service worker 的研究


背景:項目入口執行了 registerServiceWorker()。目的是為了實現 app 的離線緩存。

service worker 是獨立於主線程的 js 線程。

可用於:(1)推送消息、(2)后台同步、(3)攔截和處理網絡請求。本文只針對(3)。

先決條件:只在 https 環境中運行,防止有人劫持鏈接。

使用:參考文檔

(1)注冊 SW:

 
 

(2)安裝:在安裝成功后的回調中決定需要緩存哪些文件;再接收 fetch 請求時,返回在緩存中匹配中的資源。

(3)更新 SW:a、更新 SW js 文件,下載完成后則視為新的 SW;b、新的 SW 將會啟動,觸發 install 事件;c、此時,舊的 SW 仍控制着頁面,新的 SW 進入 waiting 狀態;d、當前頁面關閉時,舊的 SW 將會關閉,新的 SW 將會取得頁面的控制權;e、新的 SW 取得頁面控制權后,會觸發 activate 事件。

Attention:clients.claim() 可讓 SW 控制頁面;skipWaiting 盡快將新工作線程激活。兩者同時配置來實現瀏覽器同步服務端更新。

webpack  配置:通過  workbox-webpack-plugin 來初始化 SW 的 js 文件。



作者:ahappyone
鏈接:https://www.jianshu.com/p/bd2d6ac7a721
來源:簡書


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM