more_vert
こんにちは!ご質問ありがとうございます。 提供された service-worker.js のファイルキャッシュの扱いと、再読み込みのタイミングについて解説しますね。
このサービスワーカーは「キャッシュファースト(Cache First)」または「キャッシュ、ネットワークにフォールバック(Cache, falling back to network)」と呼ばれる非常に一般的な戦略を採用しています。
これは、以下のように動作します。
app.js, style.css)をリクエストします。caches.match(event.request))。fetch(event.request))、取得したファイルをブラウザに返します。キャッシュは、サービスワーカーがブラウザに初めてインストールされるとき (install イベント) に作成されます。 service-worker.js 内の FILES 配列にリストされている以下のファイルが、このタイミングで一括でダウンロードされ、キャッシュに保存されます。
const FILES = [
'/',
'/index.html',
'/app.js',
'/manifest.json',
'<https://cdnjs.cloudflare.com/ajax/libs/marked/16.1.1/lib/marked.umd.js>',
'/css/style.css',
'/js/saveControls.js',
'/icon/image.png'
];
ここが最も重要なポイントです。 この設定では、一度キャッシュされたファイルは、service-worker.js ファイル自体が更新されるまで、再読み込みされません。
つまり、例えば app.js や css/style.css の中身を修正してサーバーにアップロードしただけでは、すでにサイトを訪れたことのあるユーザーのブラウザは、キャッシュにある古いファイルを使い続けてしまいます。
キャッシュを正しく更新するための手順は以下の通りです:
app.js や style.css など、キャッシュ対象のファイルを修正します。service-worker.js ファイルを修正します。 最も簡単で一般的な方法は、CACHE_NAME のバージョン番号を更新することです。
const CACHE_NAME = 'markdownTTS-cache-v1';const CACHE_NAME = 'markdownTTS-cache-v2';