DevToolPal
日本語
3xx リダイレクト

304 Not Modified

未更新

意味

クライアントが持っているキャッシュはまだ有効なので、サーバーはボディを送りません。If-None-Match や If-Modified-Since 付きの条件付きリクエストへの応答です。

よくある原因

  • If-None-Match の ETag が現在のバージョンと一致した
  • If-Modified-Since 以降リソースが変わっていない
  • ブラウザーがキャッシュしたアセットを再検証している

対処法

クライアント・閲覧者の場合

キャッシュのボディを使います。内容が古く見えるなら検証子が間違っている可能性があります。強制再読み込みするか ETag の生成を確認します。

サイトや API の運営者の場合

安定した ETag(ロードバランサー配下の全サーバーで同一)を生成し、200 と同じキャッシュヘッダーを送ります。

レスポンス例

HTTP/1.1
HTTP/1.1 304 Not Modified
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "33a64df5"
Cache-Control: max-age=3600

仕様

RFC 9110 §15.4.5

よくある質問

› 304 はエラーですか?

いいえ。クライアントのキャッシュが最新であることを伝えて帯域を節約します。

› デプロイ後にユーザーが古いファイルを見るのはなぜ?

キャッシュヘッダーが古いコピーを許しているからです。アセットにはフィンガープリント付きのファイル名を、HTML には短い max-age と再検証を使います。