2007年04月22日

Perl版ダイナミック・パブリッシング

このブログもエントリが800を超えて、再構築すると500エラーが出ることが多くなった。
特に個別エントリの再構築は何度もリロードせざるを得ないことがあって、XREAはタイムアウトが厳しめに設定してあるっぽいので、それも合わせて負荷が1000ptを超えることが2回ほどあったり(普通はせいぜい2桁行けばいいほう)。
Movable Type自体の構造が負荷かかりやすいにしても問題すぎる。

近々デザイン(テンプレート)を変更するつもりなので、確認の度に再構築して上記の状態ではちょっとシャレにならない。
というわけで色々調べてみたら、アクセスの度に動的にページを作成してくれるプラグインを見つけた。

The blog of H.Fujiwaraさんの「Perl版ダイナミック・パブリッシング」だ。

導入は至って簡単で、説明通りに実行&設定するだけ。
ダイナミック・パブリッシングにしたのはindex、RSS、カテゴリ、月別、個別。

これで全体を再構築をしてみたが、1分もかからずに終わった。
まぁ、テンプレートだけなので当然の結果なんだけども。

問題があるとすれば、動的作成によって負荷とロード時間がかかることか。
外からアクセスしてないのでどうなるかわかないけど・・・
でも、キャッシュ機能があるし(10MBくらいに設定した)、アクセスするページはindexか最新エントリがメインなので問題無いと思う。

さて、どうなるかな・・・

トラックバック:
コメント

Atom.xmlがダメになってますわ。
Parse error: syntax error, unexpected T_STRING in /virtual/kotatsu/public_html/phpcache/0529795460.php on line 1

Sumika@凰華 at 4 23, 2007 1:40 AM

1行目がPHPスクリプトとして認識されてたのが問題でした。
修正&確認したので大丈夫だと思います。
指摘thxです。

龍井 at 4 23, 2007 2:16 AM

Perl版ダイナミック・パブリッシングのキャッシュ機能はデフォルトだと60秒でキャッシュ削除しちゃうにょろ。mt-dynamic.phpの中の記述を変えれば解決にょろ。

// 一時ファイルを削除する
$now = time();
$dh = @opendir('./phptemp');
while (($file = @readdir($dh)) !== false) {
if ($file != '.' && $file != '..') {
$fpath = './phptemp/' . $file;
$mtime = @filemtime($fpath);
if ($now - $mtime > 60) {
@unlink($fpath);
}
}
}

すみすみの場合はこうしてるにょろ。これで一週間キャッシュ保持する(はず)にょろ。
if ($now - $mtime > 60*60*24*7)

Sumika@凰華 at 4 23, 2007 4:54 AM

phpcacheフォルダの中に容量オーバーしない限りキャッシュされ続けると思ってたのだけど、勘違いでしたか・・・
帰ったら修正してみます。
重ね重ねthxです。

龍井 at 4 23, 2007 1:28 PM
コメントを書く









名前を記録させておきますか?
(次回から入力する手間を省けます)