サービスワーカーが複数いる場合、Navigator.serviceWorkerはどのように解決しますか?複数のサービス労働者が存在する場合
を実行した
これはどのように解決するのでしょうか?それは最後に登録されたサービスワーカーを返しますか?
このドキュメントでは、ドキュメントは私には分かりません。
サービスワーカーが複数いる場合、Navigator.serviceWorkerはどのように解決しますか?複数のサービス労働者が存在する場合
を実行した
これはどのように解決するのでしょうか?それは最後に登録されたサービスワーカーを返しますか?
このドキュメントでは、ドキュメントは私には分かりません。
Jake Archibaldの "The Service Worker Lifecycle"はすばらしいリソースです。読んでいない場合は、そうすることをおすすめします。
各サービスワーカーは、それぞれscopeです。既定では、最も許容度の高いスコープは、サービスワーカースクリプトが提供されるディレクトリと同じです。必要に応じて、navigator.serviceWorker.register()
に電話すると、より限定的な範囲に渡すことができます。
指定された起点に対して異なるスコープを持つ複数のサービスワーカーを登録することは可能です。 (脇:あなたが与えられた起源のため同じ範囲で複数のサービス労働者を登録しようとした場合でも、サービス労働者have different URLs場合、以降の登録がない別の登録など、サービスワーカーupdatesのように扱われます)
複数のサービスワーカーが登録されている場合は、どちらがクライアントページを制御するかを判断するために、スコープがチェックされます。サービスワーカーwhose registered scope is most specificは、最も長い一致範囲であり、特定のクライアントページを制御するものです。
したがって、例えば、対応するスコープと、次の2件のサービスワーカー登録を与え、/path/to/sw.js
をスコープに登録/path/to/
/path/to/subdir/sw.js
、スコープに登録/path/to/subdir/
クライアントページのURLが/path/to/index.html
の場合、/path/to/
が最も長い一致文字であるため、SW1がクライアントを制御しますスコープ
クライアントページのURLが/path/to/subdir/index.html
の場合、SW 2がクライアントを制御します。 SW1のスコープが一致しても、SW2のスコープも一致し、SW2のスコープはより特定的である。