Chrome 擴展中的持久Service Worker
Chrome 擴展中的Service Worker (SW) 本質上不是持久的,這意味著它們可以在一定時間後被瀏覽器強制終止不活動。對於依賴軟體來攔截和修改網路請求的擴充功能來說,這可能是一個問題,特別是當請求非常耗時或使用者在請求完成之前離開頁面時。
解決方法
有幾種解決方法可以讓軟體在Chrome 擴充功能中持續運作:
-
錯誤漏洞利用(Chrome 110): 呼叫任何非同步Chrome API 函數以使工作執行緒再保持活動狀態30 秒。此漏洞已被 Chromium 團隊認可為一項功能,預計在可預見的未來將繼續存在。
-
Offscreen API (Chrome 109 ): 建立一個離屏文件並發送每 30 秒或更短時間從它向 SW 發送一條訊息。此技術利用了以下事實:在最新版本的 Chrome 中,離螢幕文件具有無限的生命週期。
-
NativeMessaging API (Chrome 105 ): 使用 chrome 將軟體連接到本機主機程式.runtime.connectNative 函數。只要保持連接,SW就會保持活動狀態。
-
WebSocket API (Chrome 116):建立 WebSocket 連線並每 25 秒或更短時間交換訊息以保持活動狀態。
-
Chrome Messaging API: 透過來回傳送訊息來 Ping 擴充功能中的另一個選項卡,從而保持SW 活著。
-
專用選項卡: 不使用 SW,而是打開一個帶有擴展頁面的專用選項卡,該擴展頁面充當可見的背景頁面。此頁面可用於攔截請求並維護擴充功能的狀態。
警告
僅在必要時明智地使用這些解決方法非常重要。持久性軟體會消耗記憶體和資源,因此在不使用時應將其停用。此外,在儲存中保存和恢復擴充的狀態對於防止崩潰至關重要。
以上是如何讓 Service Worker 持久保留在 Chrome 擴充功能中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!