【Apache】 キャッシュ(disk_cache)を設定したのにキャッシュしてくれない
問題
以下のように設定しているのに、全然キャッシュしてくれない。
CacheRoot /usr/local/apache2/cache CacheEnable disk /images/item/
答え
ベーシック認証を設定しているページなどは、Authorizationヘッダが出力されるので、キャッシュされない!
キャッシュできるものは以下の通り。
- そのURLでキャッシュが有効となっていること(CacheEnable、 CacheDisable 参照)。
- HTTPステータスが200, 203, 300, 410 のいずれかであること。
- リクエストのメソッドががGETであること。
- リクエストが”Authorization:”ヘッダを含んでいると、キャッシュされない。
- レスポンスが”Authorization:”を含んでいるとき、”Cache-Control:”ヘッダに”s-maxage”, “must-revalidate” または “public”オプションを含んでいなくてはならない。
- URLにクエリ文字列が含まれるとき(例えば、GETメソッドのフォームなど)、レスポンスが有効期限を明示していない限りキャッシュされない(”Expires:”、もしくは”Cache-Control:”ヘッダのmax-age か s-maxageディレクティブで指定)。
- HTTPステータス200 (OK)のレスポンスのとき、CacheIgnoreNoLastMod ディレクティブを使わない場合、”Etag”, “Last-Modified”, “Expires”ヘッダか、”Cache-Control:”ヘッダに max-age か s-maxage ディレクティブを含まなくてはならない。
- “Cache-Control:”ヘッダに”private”オプションを含むとき、CacheStorePrivate の指定がないとキャッシュしない。
- “Cache-Control:”ヘッダに”no-store”オプションを含むとき、CacheStoreNoStore の指定がないとキャッシュしない。
- “Vary:*” ヘッダが含まれるときキャッシュされない
コメント