no-store と public が同居している矛盾
設定を継ぎ足すうちに、保存を禁じる no-store と保存を許す指示が同じ値に入ってしまった例です。どちらが効くか、どの指示が意味を失うかを確かめます。
入力
Cache-Control ヘッダーの値
public, no-store, max-age=86400
どちらのヘッダーか
レスポンス(サーバーから返るヘッダー)
結果
エラー 0 件・警告 1 件・情報 0 件
指摘(エラー・警告・情報)
- 警告 no-store no-store があるため応答は保存されず、max-age・public は効果がありません(RFC 9111 5.2.2.5)。意図を確認してください。
| ブラウザ(個人用キャッシュ) | 保存しない |
|---|---|
| CDN・プロキシ(共有キャッシュ) | 保存しない |
| 読み取った指示の数 | 3 個 |
指示ごとの意味
| 指示 | 値 | 意味 | 根拠 |
|---|---|---|---|
| public | 本来は保存が制限される応答(認証つきなど)でも、キャッシュが保存してよい | RFC 9111 5.2.2.9 | |
| no-store | リクエストも応答もキャッシュに一切保存しない(ほかの指示より優先して保存されない) | RFC 9111 5.2.1.5 / 5.2.2.5 | |
| max-age | 86400 秒(1日) | 保存した応答を 86400 秒(1日) の間は新しい(fresh)ものとして使ってよい。過ぎたら古い(stale)扱い | RFC 9111 5.2.1.1 / 5.2.2.1 |
検算(この結果になる理由)
no-store があると応答は保存されない(RFC 9111 5.2.2.5)ため、public と max-age=86400 は効果がなく、警告が 1 件出ます。要約はブラウザ・CDN とも「保存しない」です。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- Expires・Pragma・Vary・Age など Cache-Control 以外のヘッダーとの組み合わせは判定しません(貼り付けても読み飛ばします)。
- CDN やブラウザ製品ごとの独自の挙動・独自の指示(製品固有の拡張)は判定せず、仕様にない指示として扱います。
- 実際にサーバーへ接続してヘッダーを取得する機能はありません。貼り付けた文字だけを読みます。
- 応答のステータスコードや認証の有無によって保存の可否が変わる規則(RFC 9111 3 節)までは考慮しません。
ご利用にあたって
- 結果は仕様(RFC)にもとづく読み解きで、特定の CDN・ブラウザでの実際の動作を保証するものではありません。
- 本番の設定を変えるときは、検証環境で実際の応答ヘッダーとキャッシュの挙動を確認してください。