単一ページアプリのWebブラウザキャッシュを適切に処理する方法を見つけようとしています。
私はかなり典型的なデザインを持っています:SPAを実装するいくつかのHTML、JS、CSSファイル、およびSPAによって消費されるJSONデータの束。更新をプッシュするときに問題が発生します:サイトの静的部分とJSONを生成するコードを同時に更新しますが、クライアントブラウザーには静的部分がキャッシュされていることが多いため、古いコードは新しいデータを処理しようとし、 (行われた変更に応じて)問題が発生する場合があります。(特に、IEは、再検証せずにキャッシュされたJSを使用することについて、ChromeまたはFirefoxよりも積極的です。)
これを処理する最良の方法は何ですか?
- JSONの変更に後方互換性があることを確認し、妥当な時間内にブラウザーのキャッシュが期限切れになると仮定します。
- 静的JSとJSONの両方に何らかのバージョン番号を埋め込み、
window.location.reload(true);
一致しない場合は実行します。 - ヘッダーの適切な組み合わせ(
must-revalidate
またはno-cache
何でも; ソース はこれを行う方法によって異なります)を把握して、サイトをロードするための余分な往復を意味する場合でも、ブラウザーがすべてのロードで常にすべてのリソースを再検証するようにします。 - 更新をプッシュするときに静的コンテンツが期限切れになるように、キャッシュコントロールと期限切れヘッダーをマイクロ管理します。
- 他に何か?