で、肝心のEtagの内容。これは単純に、コンテンツの内容が変わっていないか識別する為のユニークな文字列、とのこと。 ただコレがIf-Modified-Sinceと絡むと面倒くさくなってくる。 - tDiaryまわりで大分動いていた模様。 -- http://www.machu.jp/diary/20070107.html -- http://sho.tdiary.net/20070108.html#p01 -- http://ya.maya.st/d/200701a.html#p20070109_1_4 - del.icio.usもよく分からないEtagを吐いているらしい。 -- http://blog.drry.jp/2006/08/21/delicious-etag う~~ん・・・Apache自身の挙動と、ブラウザ毎による挙動とで、訳分からなくなってきてるな・・・。例えば状況によっては、Last-Modifiedは変わらなくても、Etagを変えて更新をユーザーエージェントに通知したい場合も、あるのかも知れない。そうしたときが、落とし穴になるらしい。 ちなみにPHPでEtagを判別して、200か304かを判別してくれるクラスが http://www.ryo.com/ryo/2005/05/23/9/ にあった。・・・前にもどこかで見かけたな。 という案配。う~~ん、やっぱり、CGIやPHPは、自己の責任でLast-Modifiedを管理。で、静的ファイルは、FileMatchを組み合わせてFileEtagディレクティブで、Apache側でEtagを付けちゃう。その場合は、i-nodeではなくてmtimeとsizeを元に作るようにしておく。 みたいな感じ。・・・こうしてみると、CGIやJava系は、なるほど。アクセス数が多いサイトの場合はApacheをフロントに立たせるという手法も必要になるわなあ。特にJavaのASでWebサーバの機能を提供している場合、ここまでカバーしてくれるのか?という場合もあるし。