トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


2007-01-08(月) [長年日記]

ETagとLast-Modifiedはどっちが優先されるべきなんだ

FirefoxでtDiaryを閲覧するときに、html_anchorプラグインと(Apacheの)Actionのあわせ技で空白ページが返ることがあり、ETagを返すことで直るということを高木さんが発見したとのこと。

tDiaryは、リンク元が加わったりサイドバーの内容が変わったくらいではLast-Modifiedを変更しないので、ブラウザのリロードでは内容が変わらない。このためno-cache系のヘッダを追加して、常にコンテンツをGETさせるようにしているのだが、Firefoxではこのへんが悪さをしている(らしい)。適当なETagを返してやればそれが解消されるということだろう。

この件についてまちゅさんがいろいろやってくれているが、よくわからんので、とりあえずtDiary 2.1系でETagを吐くようにした。Apacheが「304 Not Modified」を返してくれないなら、CGIスクリプトが自分で判断して304を返せばいいだけだし。しかしHTTPのこのあたり、キャッシュ制御まわりの仕様は、条件が複雑でわけわからんなー。今度「HTTPはシンプルなプロトコルで〜」とか言うヤツがいたら首を絞めてやる。

で、いろいろテストしてみたんだけど、IE6は、ETagとIf-None-Matchが不一致だからと「200 OK」を返しても、Last-Modifiedが変わらなければ表示内容を変化させないような。なんだかなぁ。ちゃんとETagの値を変えた上でコンテンツ全部返してるんだから、それ使ってくれればいいじゃん。ケチ。

(もしかするとIf-Modified-Sinceにも対応するともっとマシになるのかも知れないけど、今回はパス)

そう言えば、If-None-Matchの値がcgi.rb経由で取れるかと思ったら、取れなかった。[ruby-core 6906]で1年前に提案されているけど1.9行きか。まぁ、非互換出されても悩ましいだけなのでこれでいいか。

本日のツッコミ(全2件) [ツッコミを入れる]
c-yan (2007-01-09(火) 03:15)

Last-Modified は同じ秒内で更新されたときに変更が認識できないので、ETag を優先すべきと 2ch ブラウザのスレではいわれていましたね.

ただただし (2007-01-09(火) 07:43)

あー、なるほど。筋は通っているけど、いかにも2chらしい理由で笑ってしまいました。


トップ «前日 最新 翌日» 編集
RSS feed