水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 続・鳩丸高速化計画その2・原因調査

続・鳩丸高速化計画その2・原因調査

2003年12月24日(水曜日)

続・鳩丸高速化計画その2・原因調査

二日間ほど詳細なログを取って調査した結果、遅い原因がハッキリと判明しました。

hatomaru.dll は XML データから XHTML を生成した後、それを内部にキャッシュとして保存するようになっていて、XML データが更新されていない場合は内部キャッシュを吐き出すようになっています。キャッシュがある場合は XML のパース、XHTML の生成といったタスクが発生しないため、高速です。

しかし、実は「絶対にキャッシュされないページ」というのがあります。まず、POST 後に表示される「投稿ありがとう」系のページはキャッシュしません。これはしても意味がありませんし、問題ないでしょう。ところがもう一つあって、それがなんと入力フォームのあるページ全てだったりするわけです。

入力フォームのページには、Cookie を使って投稿者の名前とメールアドレスを記録する仕組みがあります。Cookie の値がセットされている場合、フォームにあらかじめ名前が入った状態になります。これをキャッシュすると、投稿者欄に誰かの名前がセットされた状態でキャッシュしてしまう可能性があります。

※というか、実際にあって、泡を食って直したのですが。

というわけでフォームのあるページはキャッシュしていませんが、「○○へのコメント」というページ全てにコメントフォームが存在しているわけでして、それらのページは全然キャッシュされていません。アクセスされるたびにいちいちデータを読んで生成しているわけです。これが負荷の元凶。

そんなわけですから、データ構造を見直したりする前に

という対処で効果が上がるものと思われます。

※でも実装するのはちょいとばかり面倒。

関連する話題: C# / プログラミング / えび日記 / hatomaru.dll / 鳩丸高速化計画

最近の日記

関わった本など