で、肝心のEtagの内容。これは単純に、コンテンツの内容が変わっていないか識別する為のユニークな文字列、とのこと。
ただコレがIf-Modified-Sinceと絡むと面倒くさくなってくる。
う~~ん・・・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サーバの機能を提供している場合、ここまでカバーしてくれるのか?という場合もあるし。
コメント