サービスワーカーに値を渡してインストール手順で使用できる方法はありますか?インストール作業中にサービス担当者に値を渡す方法はありますか?
例として、Webページのリソースがプロジェクトのリリースバージョン(resource-2.11/js/...
)に基づくフォルダにある場合。ある時点で、ファイルの一部をキャッシュするにはresource-2.11
を知る必要があります。この値を渡すことはできますか?
サービスワーカーに値を渡してインストール手順で使用できる方法はありますか?インストール作業中にサービス担当者に値を渡す方法はありますか?
例として、Webページのリソースがプロジェクトのリリースバージョン(resource-2.11/js/...
)に基づくフォルダにある場合。ある時点で、ファイルの一部をキャッシュするにはresource-2.11
を知る必要があります。この値を渡すことはできますか?
いくつかのアプローチがあります。
ビルド時にservice-worker.js
ファイルを生成するのは、コメントに示唆されているように、おそらく適切なアプローチです。これには、service-worker.js
の内容を変更するだけでservice worker updateがトリガーされるため、バージョン付きプレフィックスに変更があるたびにinstall
イベントが発生することが保証されます。
しかし、何らかの理由でそれを実行できない場合、「インストール中に利用可能なサービスワーカーに値を渡す方法」の一般的な質問に対する別の答えは、IndexedDB
を使用することです。メインページから値を設定してサービスワーカーを登録すると、サービスワーカーは値を読み取ることができます。ただし、IndexedDB
の値をメインページから変更すると、ではなく、がサービスワーカーの更新をトリガーすることに注意してください。
最後に、値が変更されたときにサービスワーカーの更新をトリガーする場合に使用できる別の方法がありますが、何らかの理由でビルドステップ中にservice-worker.js
を変更できません。と同等のサービスワーカー更新をトリガします
// From your web page:
if ('serviceWorker' in navigator) {
const value = encodeURIComponent('some-parameter-value');
const swUrl = `service-worker.js?_param=${value}`;
navigator.serviceWorker.register(swUrl);
}
// From your service worker:
self.addEventListener('install', event => {
const selfUrl = new URL(self.location);
// Uses https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
const parameterValue = selfUrl.searchParams.get('_param');
// Do something with parameterValue
});
異なるURLでサービスワーカーの登録:ページからそれを登録した場合にはservice-worker.js
の最後に追加のURLクエリパラメータとして値を含めることですservice-worker.js
の内容を変更してください。
実行時に動的に決定するのではなく、ビルドのステップにすることはできますか? – Timo
@TimoStaええ、それは私の場合の問題を解決するだろう。 サービスマンが何かのパラメータを取ることができるかどうかを知ることはまだ可能でしょう。 – stef52