質問: ブラウザキャッシュについて cache-control:no-cache max-age=”86400”と指定されてる場合 キャッシュされてる?されてない? キャッシュ難しいですね。。。。 指定の違いがわかりません cache-control:no-cache max-age=”86400” ってキャッシュされてます? cache-control: max-age=”86400” は86400秒キャッシュされるのはわかるけど なんだか色んな指定方法があってわかりにくいですね Expires一番優先される?
回答: HTTP 1.1 での定義において、Cache-Control ヘッダは、次の値の**いずれか**を取ります。 * no-cache * no-store * max-age=秒 * max-stale[=秒] * min-fresh=秒 * no-transform * only-if-cached * (※cache-extension) (ここまでrequest用) * public * private[=<フィールド名>] * no-cache[=<フィールド名>] * no-store * no-transform * must-revalidate * proxy-revalidate * max-age=秒 * s-maxage=秒 * (※cache-extension) (ここまでresponse用) 複数の値を指定した場合、どちらが使われるかは**実装依存**です。おそらくは先頭のトークンだけ(質問の場合は no-cache)を解釈して、後ろは無視するでしょう。 ※仕様上、1つだけ取ると決まっているので、最初のトークンのみ処理するように実装されると考えられるため 追記: Expires よりも Pragma よりも、Cache-Control の指定が優先されることが HTTP の規定として存在しますので、Expires に何を書いてあっても、Cache-Control: no-cache であれば、キャッシュされません。