PWAの自動更新が「古い版のまま」になる原因とキャッシュ制御(_headers / vite-plugin-pwa)
概要
今回はPWAの自動更新が「古い版のまま」止まってしまう原因と、_headersによるキャッシュ制御について紹介していきます。
vite-plugin-pwaでregisterType: "autoUpdate"を入れたから、デプロイすれば全員に最新版が届く——そう思っていたのに、なぜか一部の端末でいつまでも古い画面が表示され続ける。
そんな経験ないですか?(- -;
実はこれ、Service Workerの設定ミスではなく、CDNやブラウザのHTTPキャッシュが古いsw.jsやindex.htmlを掴み続けているのが犯人なことが多いんです。
この記事では、なぜそうなるのかを「キャッシュは2層ある」という視点で整理して、public/_headersを1枚置くだけで解決する方法を解説します。
ケースA(Vite + content hash)とケースB(素のHTML静的サイト)の両方を扱うので、自分の構成に合うほうを選んでください。
それではやっていきましょう(^^!