(コラム)304NotModifiedがよく返ってくる件@HTTP技術

304NotModifiedってリソースの変更がないのでクライアントからキャッシュを表示してください。という意味なのですが、ふと疑問に思ったことがあります

「リソースの変更がない事をどうやってhttpdが判別しているのか」
「キャッシュの内容を変更しなくてよいことをどうやって伝えているのか」

調べていくうちにわかったこと

  • (レスポンス1回目)Apacheのmod_cacheでLast-Modifiedヘッダに出力
  • If-Modified-Sinceヘッダをつけてリクエス
  • ↑のヘッダの時間によってApache側で制御して 304(NotModified) or 200(OK)を返す

って流れなんですね!



参考サイト

  • 304 Not Modifiedをただただ確認してみる

http://d.bulkitem.com/20080411.html

  • モジュール版PHPで「If-Modified-Since」に対応する

http://www.arielworks.net/articles/2004/0125a


Etagについて調べました

-レスポンスをEtagにを付けて返す
-次回リクエストのIf-None-Matchヘッダに↑で取得したEtagの値を付けてリクエストをする
-サーバー側でIf-None-Matchを元に更新の有無を決定する


参考サイト
http://httpd.apache.org/docs/2.2/ja/mod/core.html#fileetag
http://www.inter-office.co.jp/contents/193/
http://blog.drry.jp/2005/01/10/2117