Chrome 擴充程式利用 Service Worker (SW) 來攔截和處理特定的 Web 要求。然而,SW 本質上是非持久性的,在一段時間不活動或運行 5 分鐘後會自動終止。這可能會幹擾需要維持持久連接或執行長時間運行任務的擴展。
儘管其短暫性,但有幾種策略可以在軟體中實現持久性:
Chrome 110 中的漏洞利用
作者定期(例如每20 秒)呼叫任何非同步Chrome API,軟體可以將其活動再保留30 秒。
Chrome 109 中的Offscreen API
離屏API 允許建立一個離屏文檔,該文檔每30 秒或更短時間發送一次保持活動訊息,從而保留SW 的
Chrome 105 中的NativeMessaging
軟體可以透過 chrome.runtime.connectNative 方法建立與本機訊息傳遞主機的連線。只要主機進程保持運行,此連接就可以延長軟體的生命週期。
Chrome 116 中的 WebSocket API
交換 WebSocket 訊息的頻率低於每 30 秒一次,從而保持連線開啟且軟體處於活動狀態。
Ping 另一個選項卡
透過向開啟的瀏覽器標籤發送定期訊息,軟體可以保持其連接並延長其生命週期。
專用選項卡
擴充頁面可以在專用標籤中載入並充當「可見背景頁面」。這種方法繞過了 5 分鐘終止限制,但需要開啟選項卡,從而消耗設備資源。
雖然這些解決方法可以延長軟體的生命週期,但僅啟用 keep- 至關重要執行關鍵任務時的活動功能。之後禁用它以最大限度地減少內存消耗。此外,將軟體的狀態儲存在持久性儲存機制中,以防止意外崩潰。
以上是Chrome 擴充功能如何實現持久的 Service Worker 功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!