MovableType のテンプレートが肥大化・複雑化すると,その再構築に要する時間やサーバ負荷が増すことになります。しかし実際のテンプレート中には,再構築によってその内容が変化しない部分が少なくありません。そのような部分については毎回々々構築を行う必要はなく,前回に構築された結果を流用することによって,テンプレート全体の再構築に要する時間や負荷を軽減できると期待できます。
テンプレート中の任意のブロックを再構築するか否かの判断が,一つ以上の値に依存しているとします。単純な例を挙げると,前回の再構築から記事の最終更新日が変化していないのであれば,<$MTEntryTitle$>,<$MTEntryBody$> や <$MTEntryMore$> などのテンプレートタグのみを含むブロックは再構築の必要がありません。そのようなブロックには前回の再構築のタイミングでキャッシュされていた内容を流用することで,これらテンプレートタグの構築処理を省略することができます。
ところで <$MTInclude module="..."$> は,テンプレートをモジュール化しているだけなので,モジュールに含まれるテンプレートタグの再構築を省略することはできません。一方,KeyCached ではテンプレートタグを一度構築した結果をキャッシュとして保存し,次回以降の再構築の際にテンプレートタグを解析・構築する替わりに,保存されたキャッシュを利用するため,その部分の再構築処理の一切を省略できる点が異なります。
ブログの検索結果ページ全体を KeyCached を用いて高速化した場合の効果を測定してみました。MovableType の検索機能は,検索の度に内部で構築処理が行われているため,キャッシュの恩恵が大きく現われます。検索結果は検索文字列にのみ依存しているものとします。実際には記事が追加/編集/削除されることを考慮する必要がありますが,とりあえずキャッシュの有効期間を短くすることで対応することにします。
| # | min [ms] | mean [ms] | max [ms] | total [s] |
|---|---|---|---|---|
| KeyCached 無し | ||||
| 1 | 2,454 | 2,844 | 3,657 | 28.45 |
| 2 | 2,611 | 2,856 | 3,342 | 28.57 |
| KeyCached 有り | ||||
| 1 | 824 | 1,197 | 2,117 | 11.98 |
| 2 | 885 | 1,314 | 1,711 | 13.15 |
さくらインターネットのレンタルサーバで稼動しているMTに対して,計測には Apache Bench を使用しました。ab -n 10 -c 1 <URL>
ソースコードの最新版とマニュアルは KeyCached の Trac リポジトリを参照してください。
開発の継続のためには、技術書の購入やバグの修正、新機能の追加、コメント欄でのユーザサポートなど、意外にお金と時間を費やします。そこで、技術書の購入やストレス解消(?)などに当てるための寄付をお願いしております。「ビールでも奢ってやるか」ですとか「これで牛丼(並)でも食え」と仰るお方からのお申し出はいつでも受け付けております。どうぞ、よろしくお願いいたしますm(_ _)m
寄付金の送付には PayPal の小額決済をご利用いただけます。
寄せられたコメント (全 15 件中、最新 5 件まで表示しています)
確認ありがとうございます。
早速落とさせていただきました。
素晴らしいプラグインをどうもありがとうございました!
申し訳有りません。サーバが不調でした。現在は接続できると思います。
初めまして。
再構築の重さにうんざりしており、
こういうプラグインをずっと探していました。
早速利用させていただこうと思い、
KeyCached の Trac リポジトリ
( http://lab.magicvox.net/trac/mt-plugins/wiki/KeyCached )
を開こうと何度も試しているのですが、なぜか繋がりません。
上記URLをクリックするだけでは入れないのでしょうか?
ご多忙とは思いますが、よろしくお願いします。
ソースコードの最新版とマニュアルは KeyCached の Trac リポジトリを参照してください。
http://lab.magicvox.net/trac/mt-plugins/wiki/KeyCached
回答なしですか?
女だからって無視?