Cache-Control の読み解き
Cache-Control の値を、指示ごとの意味と矛盾の警告に読み替える。
HTTP の Cache-Control ヘッダーの値を貼り付けると、max-age や no-store などの指示を 1 つずつ日本語で説明し、書式の誤り・重複・矛盾する組み合わせを RFC 9111 にもとづいて指摘します。入力はブラウザの中だけで処理します。
Cache-Control の値を貼り付けて読み解く
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 0 件・情報 0 件
指摘(エラー・警告・情報)
指摘はありません。
| ブラウザ(個人用キャッシュ) | 保存する。31536000 秒(1年)は確認なしで使える |
|---|---|
| CDN・プロキシ(共有キャッシュ) | 保存する。31536000 秒(1年)は確認なしで使える |
| 読み取った指示の数 | 3 個 |
指示ごとの意味
| 指示 | 値 | 意味 | 根拠 |
|---|---|---|---|
| public | 本来は保存が制限される応答(認証つきなど)でも、キャッシュが保存してよい | RFC 9111 5.2.2.9 | |
| max-age | 31536000 秒(1年) | 保存した応答を 31536000 秒(1年) の間は新しい(fresh)ものとして使ってよい。過ぎたら古い(stale)扱い | RFC 9111 5.2.1.1 / 5.2.2.1 |
| immutable | 有効期間内は内容が変わらない。新しいうちは確認のリクエストを送らなくてよい | RFC 8246 2 |
初期表示は入力例「静的ファイルを 1 年キャッシュする設定」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 結果は仕様(RFC)にもとづく読み解きで、特定の CDN・ブラウザでの実際の動作を保証するものではありません。
- 本番の設定を変えるときは、検証環境で実際の応答ヘッダーとキャッシュの挙動を確認してください。
使い方
- 開発者ツールのネットワーク欄や curl -I の結果から、Cache-Control の行をコピーして貼り付けます。
- サーバーが返したヘッダーなら「レスポンス」、ブラウザが送ったヘッダーなら「リクエスト」を選びます。
- 表で指示ごとの意味を確かめ、エラー・警告があれば指摘の文に沿って値を直します。
- 直した値を貼り直し、エラーと警告が消えたこと、要約のブラウザと CDN の扱いが意図どおりになったことを確かめます。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| 静的ファイルを 1 年キャッシュする設定 | エラー 0 件・警告 0 件・情報 0 件 |
| HTML を毎回確認させる設定 | エラー 0 件・警告 0 件・情報 1 件 |
| no-store と public が同居している矛盾 | エラー 0 件・警告 1 件・情報 0 件 |
| max-age が 2 回ある・引用符つきの秒数 | エラー 0 件・警告 2 件・情報 1 件 |
| 秒数に単位を付けた誤りと綴りの誤り | エラー 2 件・警告 0 件・情報 2 件 |
| ブラウザの再読み込みが送るリクエスト | エラー 0 件・警告 0 件・情報 0 件 |
このツールでできないこと(制約)
- Expires・Pragma・Vary・Age など Cache-Control 以外のヘッダーとの組み合わせは判定しません(貼り付けても読み飛ばします)。
- CDN やブラウザ製品ごとの独自の挙動・独自の指示(製品固有の拡張)は判定せず、仕様にない指示として扱います。
- 実際にサーバーへ接続してヘッダーを取得する機能はありません。貼り付けた文字だけを読みます。
- 応答のステータスコードや認証の有無によって保存の可否が変わる規則(RFC 9111 3 節)までは考慮しません。
よくある質問
no-cache と no-store の違いは?
no-store は保存そのものを禁じます。no-cache は保存してよいものの、使う前に毎回オリジンサーバーへ確認(再検証)することを求めます。機密情報を保存させたくないときは no-store を使います。
max-age=0 と no-cache は同じですか?
似ていますが同じではありません。max-age=0 はすぐ古くなるという意味で、確認できないときに古い応答が使われることがあります。毎回必ず確認させたいときは no-cache か must-revalidate を使います。
貼り付けた値はどこかに送られますか?
送られません。読み解きはお使いのブラウザの中で行い、ページは通信を禁止する設定(CSP の connect-src)で配信しています。社内の URL を含むヘッダーでも安心して試せます。