HTTPヘッダとコンポーネントのキャッシュについて整理

画像などの静的ファイルのキャッシュとHTTPヘッダの関係について最近の調査結果をメモメモ。

Expiresヘッダ

Expires:Mon, 27 Aug 2012 04:44:15 GMT

レスポンスのボディがキャッシュとして新鮮でなくなる日時。絶対時間で表記。
この日時まではブラウザにファイル自体がキャッシュされるため、無駄なHTTP通信を避けることができる。
If-Modified-Sinceリクエストヘッダを利用することで、提示した日時以降にリソースが更新されていたらリソースを取得する。

 If-Modified-Since: Sat, 29 Oct 2012 19:43:31 GMT

この条件付きGETでリクエストすると、
「指定された時刻以降にリソースが更新されていなければ、304を返し、レスポンスにボディを含めない。」ようにサーバは振る舞う。

Cache-controlヘッダ

クライアントーサーバでのキャッシュ方法を示す。no-cache(キャッシュしない)やmax-age(どれぐらいの期間キャッシュするか)を指定。

Cache-Control:max-age=604800

こちらは相対時間(秒)で表記。これは1週間キャッシュするの意味。


IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第5章 暴露対策:プロキシキャッシュ対策

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)