[Hiki-dev:00534] Re: データキャッシュ

Back to archive index

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/>
  ★シャア「名字が付いてない」
  ☆一兵卒「あんなの飾りです。偉い人にはそれが分からんのです」



Hiki-dev メーリングリストの案内
Back to archive index