2009/07/09(木)動的ページと Last-Modified の検討
adairyの基盤システムであるフレームワーク(Satsuki-system)にあちこち手を入れてるのですが*1、Last-modifiedをどう扱うかで悩んでしまいまいした。
あまり知られていないことですが、adiaryは正しいLast-modifiedヘッダを返します。ネットワーク負荷削減のためには大切なことなのですが、これを正しく返すため関連するすべてのファイルの更新日時を取得し、データベース情報にもテーブル単位で同じものを入れ管理しているためプログラム負荷(実行時間)が増えているという現実があります。
大手サイトはどうしてるのかなと思いまして少し調べてみました。
- Last-modified を返さない
- Yahoo、Yahooブログ
- mixi
- livedoorブログ
- Last-modified を返す
- はてなダイアリー
- アメーバブログ(トップページのみ)
あまり返さないところが多いようです。画像ファイルとかならともかく、今時テキストファイルコンテンツはあまり気にしなくて良いみたいですね。
- Last-modified を返すメリット
- ネットワーク負荷が減る
- うまくするとリクエストを受けた時点で、処理せずに出力内容を決定できる。トップページにおいて特に大きな効力がある。
- Last-modified を返さないメリット
- 動的ページを同一出力する条件をいちいち探索しないため、構造が単純になる。
- 動的ページ内で柔軟な処理が可能になる。例えばカウンタ機能を実装する等。
ちなみにRFC的には
HTTP/1.1 サーバは、可能であればいつでも Last-Modified を送るべきである。
RFC2616
です。それで結構苦労して後から*2実装したのですが、Satsuki-systemを扱う上で難しくしている要因でもあるので消そうかなあ。
結局
消しました。実装がとてもすっきりしました。