iRSSの日記

はてなダイアリーiRSSの日記の続き

RailsのEtag生成ルール

response body 全体の MD5 ハッシュだそうです

Rails での ETag の話です。

上のようなことを気にしながら Rails 2.0.2 で開発中のアプリをこねくり回していて気づいたんですが、Rails では ETag を勝手につけてくれるらしいです。どうやって計算しているのでしょう? 以前も付いてたのでしょうか?

以下応答の抜粋です。

GET /search?q=xxx HTTP/1.1
Host: localhost:3000
If-None-Match: "3f79be44e27fc7dc248258b4f4fca3a9"

HTTP/1.x 304 Not Modified
Etag: "3f79be44e27fc7dc248258b4f4fca3a9"
Server: Mongrel 1.1.3

で、調べてみたところ、答えは response body 全体の MD5 ハッシュでした。
/usr/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/response.rbの中に以下の部分を見つけました。