Cache-Control
Cache-Controlヘッダの概要
HTTP/1.1通信において、「コンテンツをキャシュするかしないか」などのキャッシュに関わる制御をするために利用するHTTPヘッダ。
「キャッシュ」についての概要は下記のページを参照!
Cache-Controlヘッダが未指定の場合、キャッシュ対象となる(sharedキャッシュとして扱われる)。
多くのCDNでは「GET」または「HEAD」メソットの通信のみがキャッシュする通信の対象されているが、技術仕様「RFC7234」によると、「POST」メソッドの通信もキャッシュする通信の対象となっている。
利用例
レスポンスのCache-Controlヘッダに、キャッシュ禁止を示す値「no-store」が指定されている場合の通信例。
コンテンツをキャッシュさせたくない場合の設定
利用しているCDN(Content Delivery Network)によっては「no-store」,「no-cache」を見ないなど、全ての仕様が実装されているとは限らないため、下記の設定がベストとなる。
フィールド値の一覧
Cache-Controlヘッダに指定可能な値の一覧。
値 | 説明 |
---|---|
private | 他のユーザには共有してはならないデータであることを示す。プライベートキャッシュに格納すべきコンテンツである事を示す。 |
public | 共有キャッシュに格納すべきコンテンツである事を示す。 |
no-store | コンテンツをキャッシュとして一切保存してはならない。 |
no-cache | キャッシュを保存して良いが、キャッシュを利用する際は既に保存したキャッシュが有効であることをオリジンサーバに毎回確認しなければならない。 |
no-transform | 中継者(Proxy等)はオブジェクトに対しての操作(形式変換など)をしてはならない事を示す。(画像の再圧縮等を防ぐ) |
must-revalidate | キャッシュが期限切れの場合、オリジンサーバでの確認無しにキャッシュを利用してはならない。サーバダウン時もキャッシュを使用してはならない。 |
proxy-revalidate | privateキャッシュには適用されないことを除き、値「must-revalidate」と同じ。 |
max-age=<秒数> | キャッシュの有効期限(秒数)。サーバがレスポンス生成してから何秒後までキャッシュが有効か。 |
s-maxage | 共有キャッシュ(経路上のキャッシュ)にのみ有効なmax-age。 |
参考
キャッシュ制御に関連するヘッダフィールドは以下の通り。
Cache-Controlヘッダの詳細な資料は以下を参照!