ホームページ >ウェブフロントエンド >jsチュートリアル >Chrome 拡張機能の Service Worker を永続的に維持するにはどうすればよいですか?

Chrome 拡張機能の Service Worker を永続的に維持するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-27 14:03:101035ブラウズ

How Can I Keep My Chrome Extension's Service Worker Persistent?

Chrome 拡張機能の Persistent Service Worker: ガイド

Chrome では、Service Worker (SW) の永続化は本質的にサポートされていません。設計上、SW は非アクティブ状態が 5 分間続くとアンロードされるように設計されているため、サービスを継続的に実行し続けることが困難になります。この記事では、SW を実行し、イベントに応答し続けるためのさまざまな回避策を検討します。

既知の問題と制限事項

  • 非アクティブおよびアンロード タイマー: SW には 30 秒の非アクティブ タイマーと 5 分間のアンロードがあります。 timer.
  • イベント実行の問題: Chrome は、特に古いバージョンでは、すべての webRequest イベントに対して SW を一貫してウェイクアップしない場合があります。
  • 頻繁なイベント処理: webRequest や webNavigation などの頻繁なイベントを処理すると、過剰な SW の再起動が発生し、パフォーマンスに影響を与える可能性があります。
  • 連続 API 呼び出し: 特定の Chrome API を連続して呼び出すと、SW の寿命を延ばすことができますが、このアプローチはバグエクスプロイトとみなされます。

回避策:

バグの悪用(Chrome 110 ):

  • ラップされた chrome.runtime.getPlatformInfo() 呼び出しを変数に代入し、繰り返し呼び出すと、SW の実行時間が長くなります。

オフスクリーン API (Chrome 109) ):

  • 30 秒ごとに SW にメッセージを送信するオフスクリーン ドキュメントを作成します。このメソッドは現在、無制限の有効期間を提供していますが、将来的に改訂される可能性があります。

NativeMessaging API (Chrome 105 ):

  • SW の接続ネイティブメッセージングホストは、ホストがクラッシュしたり、

WebSocket API (Chrome 116 ):

  • WebSocket 接続を確立し、非アクティブ状態を防ぐために 25 秒ごとにメッセージを交換します。

Chrome メッセージングAPI:

  • 30 秒ごとに専用タブから SW にメッセージを送信します。これには広範なホスト権限が必要ですが、ネイティブ アプリや API は必要ありません。

専用タブ:

  • 拡張機能ページでブラウザ タブを開きます。 SWと通信します。このアプローチは永続的なバックグラウンド ページを模倣しますが、より多くのメモリを消費し、ユーザーの注意をそらします。

注意:

  • 過剰なリソース消費: 必要な場合にのみキープアライブ メカニズムを使用し、タスクが完了したら無効にします。
  • 状態管理: 戦略を実装する予期せぬ事態が発生した場合に SW 状態を保存および復元するため
  • 永続的な前提: 状態管理を簡素化することだけを目的として SW を永続化することは避けてください。これは主に、状態の再構築にコストがかかる場合、または頻繁なイベントに対応してパフォーマンスを向上させるために使用します。

以上がChrome 拡張機能の Service Worker を永続的に維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。