用語辞典・OS・ブラウザ

ブラウザキャッシュ

ブラウザキャッシュとは

browser cache(ブラウザ・キャッシュ)は、Webページのファイルや応答をブラウザへ一時保存し、再表示を速くする仕組みです。HTTPでは一利用者用のprivate cache(プライベート・キャッシュ)として、再利用可能な応答を管理します。

HTML、CSS、JavaScript、画像、フォント、API応答等を保存し、同等の要求が来たときにfreshならネットワークへ出ず返し、古いならサーバーへ変更有無を問い合わせます。

キャッシュは「古いファイルを置くフォルダー」だけではありません。要求に合う応答を選ぶキャッシュ鍵、再利用期限、検証、削除・置換を制御するサブシステムです。

要求をキャッシュ鍵で照合し、freshなら即時再利用、古いなら検証器、変更済みなら新応答へ交換する再利用、再検証、更新、保存禁止、再読み込みを別の分岐として読む
ブラウザー、プライベートキャッシュ、オリジンサーバーの間でfresh応答のローカル再利用、古い応答の検証器往復、変更応答の置換、no-store、再読み込みを分岐し、履歴、Service Workerキャッシュ、Cookieを別枠にしたピクトグラム図解
図1古いは直ちに削除する意味ではありません。検証器で未変更と分かれば、保存済み本文を再利用できます。

キャッシュ判断を六つに分ける

Cache鍵要求に合う候補を選ぶ

方式と対象URIを基本に、Varyで指定された要求フィールド等を照合します。

Freshness問い合わせなしで使えるか

max-age、Expires、Age、stored時刻等から鮮度有効期間を計算します。

Validation変更有無だけ確認

ETagやLast-Modified由来の検証器を条件付き要求へ添えます。

Reuse保存済み本文を返す

同等要求を満たせるfresh応答または検証済み応答を使います。

Replacement新応答へ更新

リソース変更時は新しい状態・ヘッダー・本文を保存条件に従って置換します。

Eviction容量と方針で追い出す

期限内でも保存領域pressureや利用頻度により削除される場合があります。

鮮度と検証は別の処理

Cache-Control: max-age等でfreshな間は、オリジンへ確認せずキャッシュ応答を使えます。期限を過ぎて古いになると、通常は再利用前に検証が必要です。

ETag(イータグ)If-None-Matchへ、最終更新日時をIf-Modified-Sinceへ入れ、未変更なら本文なしの応答を受けます。ネットワーク往復は残りますが大きな本文転送を減らせます。

no-cacheは「保存しない」ではない

no-cacheは、保存済み応答を再利用する前に検証を要求するディレクティブです。保存自体を避けたいときはno-storeを使います。名称だけで逆に覚えないようにします。

privateは共有キャッシュでの保存を制限し、ブラウザーのプライベートキャッシュには保存可能です。個人情報がある応答では、認証だけに頼らず明示的なキャッシュ方針を設定します。

Varyが足りないと別variantを混ぜる

同じURLでもコンテンツエンコーディング、言語、Client Hints等で応答が変わるとき、Varyがキャッシュ鍵選択へ必要な要求フィールドを示します。不足すると別条件の応答を再利用する危険があります。

一方、Vary項目を増やしすぎると候補が細分化され該当率が下がります。URL設計、レスポンシブリソース、CDN方針と合わせて選びます。

再読み込みは常に全キャッシュ削除ではない

通常再読み込み、強制再読み込み、開発ツールのキャッシュ無効化はブラウザー・プラットフォームで挙動と操作が異なります。通常再読み込みは保存済み応答へ検証を行い、未変更本文を再利用する場合があります。

キャッシュデータ全削除は別操作です。公開直後の確認ではリソースURLバージョン管理と正しいCache-Controlを使い、利用者へ毎回全キャッシュ削除を求めません。

似た保存場所を区別する

戻る・転送の高速復元は履歴mechanism、Service WorkerのCache Storageはアプリケーションコードが選ぶ別保存、Cookieは要求状態、メモリーキャッシュはページ有効期間の実装最適化です。

ブラウザーキャッシュはHTTP応答を正しく再利用する仕組みです。キャッシュ鍵、鮮度、検証器、ディレクティブ、Varyを読むと、速さと更新の両立を説明できます。

HTTP cache、cache key、freshness、validation、private・shared cache、application cacheとの境界:RFC 9111「HTTP Caching」

関連用語