Real World HTTPのキャッシュの部分を読んだので自分なりのまとめです。
Last Modified
サーバーがレスポンスに最終更新日時を持たせ返す。
2度目以降のダウンロード時にクライアントはIf-Modified-Sceneヘッダーに
レスポンスで返ってきた最終更新日時を持たせてリク
エストをする。
サーバー側はリクエストの最終更新日時とサーバー上のコンテンツの最終更新日時を
比較し、変更がなければ「304 Not Modified」を返し、変更があれば「200 OK」とコンテンツ返す。
Expires
日時を格納する。
クライアントはこの期限内であれば、強制的にキャッシュを利用する。
Etag
サーバーがレスポンスにEtagヘッダーを持たせ返す。
2度目以降のダウンロード時にクライアントはIf-None-Matchヘッダーに
レスポンスで返ってきたEtagの値を持たせてリクエストをする。
サーバー側はEtagの値を比較してEtagの値が同一ならば「304 Not Modified」を返し、
変更があれば「200変更があれば「200 OK」とコンテンツ返す。
Cache-Controll
public
同一のコンピューターを使う複数のユーザー間でキャッシュを再利用することを許可する。
private
同一のコンピューターを使う複数のユーザー間でキャッシュを再利用しない。
同一URLから異なるコンテンツが返される場合に利用。
max-age=n
キャッシュの鮮度を秒で設定。
設定内であればサーバーに問い合わせずに、キャッシュを利用。
それ以降はサーバーに問い合わせ、「304 Not Modified」が返ってきた場合のみ
キャッシュを利用する。
s-max-page=n
max-ageと同等。
共有のキャッシュに対する設定。
no-cache
キャッシュが有効性を毎回サーバーに問い合わせる。
max-age=0とほぼ同じ。
nostore
キャッシュしない。
no-tranceform
プロキシがコンテンツを改変するのを抑制。
must-revalidate
nocacheとほぼ同じプロキシサーバーがサーバーに問い合わせ、応答がなければプロキシサーバーがクライアントに「504 Gateway Timeout」を返すことを期待する。
proxy-revalidate
must-revalidateと同様。
共有のキャッシュのみに適用する。
Vary
UserAgentなど同じURLでもクライアントによって返す結果が異なることを示すヘッダー。
Varyを指定することで、UserAgentなどVaryで指定したヘッダーの内容に応じたキャッシュを
利用するようにする