キャッシュ関連のヘッダメモ

なんとなくで通り過ぎてたのを調べてみたメモ。 知ってたのも知らなかったのも、恥を晒すためにもブログに書いておく。

リクエストヘッダ

If-Modified-Since

日時を指定し、それより新しいコンテンツの場合にのみデータを返すようにサーバにリクエストする。

Ajaxでのキャッシュ抑制のために以下の設定で頻繁に使ってるな。

If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT

この使い方が合ってるのかは分からんですけども、 QueryStringに時間をくっつけてキャッシュから逃げるやり方よりかは、 こっちの方がスマートで好き。

If-None-Match

エンティティタグを指定し、一致しない場合にのみデータを返すようにサーバにリクエストする。

If-None-Match: "xyzzy"

とか

If-None-Match: *

とか指定するらしい。意図的に付ける場面はまだ思いつかないなぁ。

レスポンスヘッダ

Expires
コンテンツの有効期限を指定する。
Last-Modified
コンテンツの最終更新時刻を指定する。 If-Modified-Since と対で使用される。
ETag

コンテンツを特定するための固有値を指定する。 If-None-Match と対で使用される。

Proxyとか使ってる場合にコイツが悪さをする事があるらしい。 その場合、設定を変えてやる必要がある。デフォルトだと以下になってる。

# デフォルトだとi-node, 最終変更時刻, ファイルサイズを見る。
FileETag INode MTime Size

i-nodeなどが邪魔してる場合は INode を外してやる。

# 最終変更時刻, ファイルサイズを見る。(i-nodeは見ない。)
FileETag MTime Size

Directory, VirtualHost なディレクティブでも指定出来る。詳しくは core - Apache HTTP サーバFileETag を見る。

共通ヘッダ

Cache-Control
そのまま。キャッシュコントロールに関する指定をする。 HTTP/1.1から追加されたらしい。詳しい情報は HTTP/1.1: Header Field Definitions14.9 Cache-Control を見る。
Pragma
特殊な追加情報を指定する。これはHTTP/1.0からある。 no-cache を指定することも出来る。詳しい情報は HTTP/1.1: Header Field Definitions14.32 Pragma を見る。

まとめ

眠気と戦いながら、調べながらメモしたので全然まとまってないや。 でも、忘れた時に見るべき場所は分かったので、それだけで良しとする。 また理解出来た頃にちゃんとまとめようと思う :-P

Posted at: 
2008/05/01 02:26:03
0 Comments
0 TrackBacks
Tags: 
apache
REST
Trackback: 
http://humming.via-kitchen.com/2008/05/01/cache-control-headers/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment