【エイチティーティーピーキャッシュ】

HTTPキャッシュ とは?

💡 一度取りに行ったデータを手元に保存——同じものを何度も取りに行かない賢い仕組み
📌 このページのポイント
HTTPキャッシュ — 強いキャッシュと条件付きリクエスト ブラウザ リクエスト送信 ブラウザキャッシュ 保存済みレスポンス ETag / Last-Modified サーバー オリジン ① 強いキャッシュ(max-age有効内) ブラウザ → キャッシュ → 即レスポンス(200 from cache) サーバー通信なし!高速 ② 条件付きリクエスト(max-age期限切れ) ブラウザ → If-None-Match: ETag → サーバー → 304 Not Modified 本体転送なし max-age=31536000 no-cache(毎回検証) no-store(保存しない) immutable 期限切れ時のみ
HTTPキャッシュの2つのパターン
ひよこ ひよこ

ブラウザキャッシュって何を保存してるの?

ペンギン先生 ペンギン先生

HTMLCSSJavaScript、画像など、サーバーから取得したリソースのコピーを保存してるよ。次に同じページを開いたときサーバーに取りに行かなくて済むから、表示が速くなるんだ

ひよこ ひよこ

キャッシュの期限ってどうやって決めてるの?

ペンギン先生 ペンギン先生

サーバーがCache-Controlヘッダーで指定するよ。例えば「max-age=3600」なら1時間キャッシュを使っていいよという意味。「no-cache」なら毎回サーバーに鮮度を確認してから使う。「no-store」ならキャッシュしないんだ

ひよこ ひよこ

キャッシュが古くなったらどうなるの?

ペンギン先生 ペンギン先生

期限が切れたら条件付きリクエストを送るよ。「このETag値のリソース、まだ変わってない?」とサーバーに聞いて、変わってなければ304 Not Modifiedが返ってきてキャッシュを再利用する。変わってたら新しいデータが送られてくるんだ

ひよこ ひよこ

キャッシュの設定を間違えるとどうなるの?

ペンギン先生 ペンギン先生

max-ageを長くしすぎると、サイトを更新しても古いCSSJSが使われ続けちゃう。だからJS/CSSにはファイル名にハッシュをつけて(app.a1b2c3.js)immutableキャッシュにし、HTMLはno-cacheで毎回チェックするのが現代のベストプラクティスだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
HTTPキャッシュ」って出てきたら「一度取得したデータをブラウザに保存して再利用する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「HTTP Cache」 = HTTP通信のキャッシュ
💬 Cache(貯蔵庫)にHTTPレスポンスを保存しておく仕組みで、Web高速化の基本中の基本だよ
← 用語集にもどる