うまいぼうぶろぐ

linuxとhttpdとperlのメモ

etagは返さないように設定したほうが良いのかな

HTTPのcacheの管理にEntity Tagを使うみたいで、デフォルトではEtagはfileのinode、filesize、timestampで決まる。クラスタ構成で、各webサーバが自前でファイルを持っている場合、inodeが変わってしまってキャッシュが効かなくなる。*1

キャッシュの判定には日付を見るIf-Modified-Sinceを使えば良い*2ので、Etagは無効にしてしまえば良い。

FileEtag None

同一秒でファイルが更新される可能性があるなら、If-Modified-Sinceだけじゃダメだけど。

*1:If-Modified-SinceとIf-None-Matchが同時に使われるとIf-None-Matchが優先される

*2:もちろん各サーバに置いてるファイルの更新時刻が異なっていれば、キャッシュされないこともある