del.icio.us のミステリアスな ETag
ブックマークをネットワーク上に保存、公開、共有する、ソーシャルブックマークの del.icio.us というサービスのお話。
いきなり蛇足になりますが del.icio.us では、ほぼすべてのページが PHPPerl で動的に生成されていて、クライアントを振り分けているのが興味深いです。
さて、del.icio.us が提供する一部の RSS や JSON は他のページと違って、Last-Modified と ETag ヘッダが付いてきます。トラフィック削減のためでしょうか。そこでこれらのヘッダを有効利用してみると、If-Modified-Since ヘッダ付きのリクエストに対しては適切に 304 Not Modified のレスポンスが返って来ますが、If-None-Match ヘッダで ETag の値を付けたリクエストでは 200 OK となり、304 が返されることはありませんでした。
この使い道のない ETag は Apache HTTP Server によるものとは違って、次に示すようにダブルクォーテーションで括られず、数字のみで構成されたオリジナルのタグでした。
ETag: 31313536303837303834
Last-Modified: Sun, 20 Aug 2006 15:18:04 GMT
勘の良い人なら見てすぐに気付いたかもしれませんが、この数字には興味深い法則があります。一つ置きに 3 が入っているんです。一つ置きに 3 を除いてみると、この数字は 1156087084 になります。
勘の良い人なら見てすぐに気付いたかもしれませんが、1 から始まるこの十桁の数値は UNIX time なんですね。この UNIX 秒はいつの日時を指しているかというと、Last-Modified の日時と一致します。
なぜ 3 を挟んでるんでしょう。実にミステリアスです。
If-None-Match に効果がない無意味な ETag をあえて返す理由は。プロキシサーバやウェブブラウザのキャッシュに何らかの作用を期待しているのでしょうか。あるいは与えた ETag を If-None-Match で返してくるかどうかをトラッキングに利用しているとか。または単なるバグや未実装……
なにか知っているという方がいましたら、情報提供をよろしくお願いします。
- タグ
- del.icio.us
- ETag
- HTTP
- 公開日時
- 2006-08-21T21:16:19+09:00 @552
- 更新日時
- 2006-08-21T22:53:00+09:00 @620
- Permalink URI & TrackBack URL
- http://blog.drry.jp/2006/08/21/delicious-etag
コメント ( 2 )
単に '0' = 0x30 だと思いますが。
なるほど、つじつまが合いますね。納得できました。さらに上を行く勘の良さですね。自分の頭では謎のまま思考停止だったので、エントリを書いてよかったです。
あとは、この
ETagがIf-None-Matchに効果を持たない謎だけです。どうもありがとうございます。