概要: 空繰再繰を plasxom で構築し直した
気付いてる人ははているのかなって感じですが、 この度空繰再繰を plasxom で構築し直しました。
やり始めたのがいつ頃だったかは忘れたんですが、ちまちまとプラグインを書いたり、 テンプレートを移植したりして一通り移行作業が終わってサーバで deploy したのが金曜日。
で、なんかモッサリで blosxom の時と体感が変わらないよウワーンな感じで、
Devel::NYTProf
使って最適化してたのが昨日。
で、ようやく最適化も終わって、キビキビと動作するようになったのが今日というわけです。
いや最初本当にモッサリで、なんで早くならないんだよぅウワーンってなってたんですが、
そこはプログラマなので原因を突き止めて改善、ある程度までは高速に動作するようになりました。
いやーDevel::NYTProf
知らなかったらどうなってたことか。
で、最適化の内容としては、
- インスタンスの生成結果をキャッシュ (
plasxom::date
) - パスの処理結果をキャッシュ (
plasxom::entries::blosxom->entry_path
) - アクセサを使わずにダイレクトにインタンスの保持変数へアクセス
- インスタンスの生成を抑える (
plasxom::plugins->setup
内でPath::Class::dir->file
使わないようにした) - モジュールの読み込みを最適化(スクリプトの最初の方で読み込むようにして、それ以下では
use
しないようにした)
という感じのことをやってました。この辺りの変更については
- <http://github.com/nyarla/plasxom/commit/d5240b5cd7dc45c7296e9756c7e2f351a0538523 http://github.com/nyarla/plasxom/commit/d5240b5cd7dc45c7296e9756c7e2f351a0538523>
- <http://github.com/nyarla/plasxom/commit/a2223f496d504add7663a359f8dd0903d59a59dc http://github.com/nyarla/plasxom/commit/a2223f496d504add7663a359f8dd0903d59a59dc>
- <http://github.com/nyarla/plasxom/commit/0d76f246b2f8f02130d856826fc29d9b510ddfa4 http://github.com/nyarla/plasxom/commit/0d76f246b2f8f02130d856826fc29d9b510ddfa4>
を見ると大体分かると思います。で、上記の最適化で、大体 1 ~ 3 秒ぐらい早くなりました。
あと高速化でやってることといえば、lastmodified
プラグインで、
テンプレートの生成結果をキャッシュするようにしてあったりします。
まあ無くても体感は変わらない感じだけど、
リクエストにIF_MODIFIED_SINCE
が設定されてない場合とかに早くなるかも。
で、plasxom 自体は一通りの機能が完成してるんですが、ドキュメントを用意したりとか、 公式サイトを作ったりというのがまだなので、まあこの Blog での正式な紹介は先になりそうです。 あとまだ API とかも微妙にいじったりしてるので、そこら辺完全には安定してないし。
まあでも使えないことはないので、興味があったら
$ git clone git://github.com/nyarla/plasxom.git
してみてください。
ということで今日は空繰再繰を plasxom で再構築したという話でした。
#FIXME