Kazuhiko
kazuh****@fdiar*****
2004年 4月 17日 (土) 15:08:31 JST
かずひこ@高速化好き です。:) At Sat, 17 Apr 2004 04:47:20 +0900, Masao Mutoh wrote: > HikiのCVS版にキャッシュ機能を付けてみました。 とても面白い試みですね。さっそくパッチをざっと拝見しました。 def clear(pageid = nil) return unless $use_cache_data Dir.glob(File.join($cache_path, "html/*")).each do |f| f.untaint if pageid data = IO.readlines(f).join("\n") File.delete(f) if data.include?(pageid.escape) else File.delete(f) end end end この if pageid のところですが、info.db の :references を使う方が低コスト で実装できないでしょうか? あと、'File.join($cache_path, "html/*")' は 'File.join($cache_path, "html", "*")' でないと Windows で困ったりします? (自信なし) > 以下に簡単な計測結果(それぞれ3回計測した平均値)を > 紹介します。 Web アプリのベンチマ−クには、apache 付属の ab も便利ですよね。 (特に、mod_ruby とか FastCGI のように直接 ./hiki.cgi とかしないケ−スの 評価とかに) ==== 以下、余談♪ ==== > ポイントは以下の3点です。 > ・プラグインは表示するたびに動的に表示内容が変わる可能性が > あるのでキャッシュできない。 むとうさんとは別のアプロ−チで私もキャッシュ化を実験しています。私のは、 サ−チエンジン向けや namazu 検索用に静的な HTML を作る、という方向性です。 tDiary の squeeze.rb みたいなものといえば分かる人には分かるでしょう。:) 用途を限っている分、HTML 生成時点でのプラグイン解釈をそのまま記録して問 題ないだろうというわけです。さらに、テンプレ−トも不要な部分は削りまくっ たものを別途作って、こんな感じです。 $ cat template/ja/cache.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head id="header"> </head> <body> <div class="@view_style"> <h1 class="header" id="view_title"></h1> <div id="body"></div> </div> </body> </html> あとは、mod_rewrite で Googlebot 等に対してはこのテンプレ−トによる静的 HTML に誘導しています。該当するアクセスに対してはそりゃもう速すぎるくら い速い :) そういう意味では、「表示するたびに動的に表示内容が変わる可能性があるプラ グイン」を一切使わない Hiki サイトでは、view アクセスを全て静的 HTML に 置き換えることで劇的な高速化もできるわけですが (RuBBS がこういう仕組みに なっています)、そういうオプションもあってもいいかもしれませんね。 -- かずひこ <http://wiki.fdiary.net/kazuhiko/> ★シャア「名字が付いてない」 ☆一兵卒「あんなの飾りです。偉い人にはそれが分からんのです」