ETag

If-Modified-SinceやらLast-Modifiedやらなんやらの絡みで、ETagなるものを調べていたわけですが、とりあえずあれば使うけどなくても別に・・・みたいなモノっぽい感じ。If-Modified-Sinceは、とりあえずLast-Modifiedを常に吐いて、受信ヘッダをチェックし適切に304を返してやるだけでOKな感じ。

ていうかETagはどういう風に生成するものか調べきれなかった。リクエストされたURLや更新時刻、inodeなどを元に生成するらしいけど。そこまでしか。

ブラウザは受け取ったETagの値を、次回リクエスト時にIf-None-Matchの値としてそのまんま送ってくるだけな感じなので、適当にMD5やらなにやらでハッシュを生成してやるだけ?

まぁ、Last-Modified吐いて適当にIf-Modified-Since調べるだけで十分っぽい感じなので、もうblosxomのプラグインには実装しないと決めたんですが。

Movable Type 3.1からサポートされた動的生成はどんな感じなんだろう? 調べてみて目から鱗だったらパクろう参考にしようかな。

追記@2004/09/15

しーぱん派なにぽたんさんからETagの生成方法(Apacheにおける実装に過ぎないのかもしれない)をコメントで教えてもらったので追記しておく。

my $etag = sprintf(qq{ETag: "%x-%x-%x"\n}, (stat($file))[1, 7, 9]);

$fileに対するstat()で返されるリストの、inode/size/mtimeをそれぞれ符号なし16進数でフォーマットしたものを"-"で連結ということみたいですね。