Movable Typeの再構築コストを下げる「RebuildIndexFilterプラグイン」バージョンアップ
Movable Typeのインデックステンプレートの再構築コストを削減する「RebuildIndexFilterプラグイン」をバージョンアップしました。
このプラグインは2008年に公開したものです。ということで、このプラグインをご存知ない方のために、改めて紹介も兼ねたいと思います。
1.インデックステンプレートの再構築について
プラグインの機能を説明する前に、Movable Typeのインデックステンプレートの再構築の振舞いについて解説します。
インデックステンプレートは、その公開設定が「スタティック」になっている場合、管理画面からの再構築を除き、次のいずれかのイベントが発生すると、すべて再構築されるようになっています。
- ブログ記事の投稿・編集
- ウェブページの作成・編集
- コメント投稿
- トラックバック受信
具体例を示します。「クラシックブログ」テーマでは次の6つのインデックステンプレートが登録されています。
- アーカイブインデックス
- スタイルシート
- メインページ
- JavaScript
- RSD
- 最新記事のフィード
この6つのテンプレートの「公開」設定が、次のように「スタティック」になっているとします。
「公開」設定
そうすると、再構築時間に差はありますが、6つのインデックステンプレートがすべて再構築対象になります。ファイルの内容に変更がない場合、ファイル自体は出力されませんが、再構築データと出力ファイルの比較処理まで実施されると思います。
つまり、インデックステンプレート再構築の問題点は、「再構築の必要がないテンプレートまで再構築対象になってしまう」ことです。
もうひとつ例をあげると、コメント投稿では「メインページ」テンプレート以外のインデックステンプレートを再構築する必要はないのですが、MTのデフォルト機能ではそういった制御を行っていないので、再構築対象となってしまいます。公開設定を「手動」にすれば再構築対象外にできますが、そうすると必要なイベントで再構築できなくなります。
また、デフォルトで用意されているインデックステンプレート以外に、Googleサイトマップやサイドメニューなど、多くのページをインデックステンプレートで作っていると、さらに再構築対象のインデックステンプレートが増加し、イベントの応答時間に影響します。
ちなみに当サイトでは、図のように多くのインデックステンプレートを登録しており、ブログ記事投稿やコメント投稿でかなりの再構築コストがかかってました。以前、別のサーバを使っていたときは500エラーも発生することがありました。「最近のブログ記事」などのサイドメニュー類は、各ページで表示内容を統一させたいのでインデックステンプレートで生成し、Ajaxで表示させています。
当ブログのインデックステンプレート
インデックステンプレートだけでなく、インデックステンプレートからインクルードしているテンプレートモジュールも当然再構築対象になります。
2.プラグインの機能
このプラグインを適用すれば、イベントごとに再構築対象のインデックステンプレートを指定できるようになります。
当ブログではこのプラグインを導入して、図のような設定を行いました。これによりイベントごとの再構築時間がかなり短縮されました。
プラグインの具体的な機能ですが、インデックステンプレートの再構築トリガを、次の5種類のイベントから選択することができます。
- ブログ記事の投稿
- ウェブページの作成
- コメント投稿
- トラックバック受信
- すべて
例えば、フィードなどは「ブログ記事の投稿」のみをトリガに再構築することで、コメント投稿などによる再構築から除外することができます。設定画面は3項をご覧ください。
3.変更点
今回のバージョンアップでMT5.1に対応できるようにしました。画面処理の変更のみです。インデックステンプレートのオプション設定部分に、次のように「再構築イベント」が表示されます。
インデックステンプレートのオプション設定部分
4.プラグインのダウンロード
RebuildIndexFilterプラグインは、以下のリンク先からダウンロードできます。
- TwitCommentプラグイン v0.04
- TwitCommentプラグイン v.0.22
- TwitCommentプラグイン(Movable Type 4.x対応)
- ArchivePathSelector プラグイン v0.10
- PageButeプラグインで分割したページの文字コードを変更する方法
- CharsetEncoder プラグイン v0.10
- CharsetEncoder プラグイン v0.05
- CharsetEncoder プラグイン v0.04
- Movable Typeのウェブページの出力を制御する「PagePublishControllerプラグイン」バージョンアップ
- CharsetEncoder プラグイン v0.03
- CharsetEncoder プラグイン v0.02
- Movable Type のインデックステンプレートの再構築をフィルタリングする「RebuildIndexFilter プラグイン」バージョンアップ
- PostToTwitter プラグイン
- asciiCommentfilter プラグイン
- RebuildIndexFilter プラグイン v0.06
yujiro さん、
お年玉をいただいた気持です。
どうもありがとうございました!!
>s.fujinoさん
こんばんは。
バージョンアップが遅くなり申し訳ありませんでした。
それではよろしくお願い致します。