テンプレート内から指定したインデックステンプレートを再構築するMovableTypeプラグイン:IndexTemplateRebuilder

Posted by
ぴろり
Posted at
2008/03/27 11:38
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
プラグイン

 インデックスAを再構築するには,事前に必ずインデックスBを再構築しておく必要がある場合,今までその再構築作業を順を追って手作業で行っていました。また,記事を保存した時やコメント投稿時などの再構築負荷を低減する目的で,殆どのインデックスの自動再構築オプションをオフにしているために,新しく記事を公開する度に,トップページや,サイトマップなどの必要なインデックスを忘れないように手作業で再構築していました。
 このようにインデックス間の再構築順序に依存関係がある場合や,特定複数のインデックスを一括で再構築するのに便利な を書いてみました。

この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する

使い方の例 1. 依存関係にあるインデックスを正しく再構築する

 当サイトでは のインデックスとして を生成する際に,サーバ転送量を削減する目的で,無圧縮のファイル(screen.css)と gzip 圧縮されたファイル(screen.css.gz)の二つをのファイルを生成するようにしています。無圧縮で 17.6K バイトある screen.css は gzip 圧縮によって 3.7K バイトと大幅に小さくなります。特に新規ビジタが 7 割近くを占める当サイトでは,これら訪問者毎に screen.css を転送する必要があるので,この転送量の削減効果はかなり大きなものになるでしょう。本来ならば サーバの mod_deflate モジュールなどを利用するなど, サーバ側で対処すべき事柄なのですが,当サイトが間借りしているではサーバが対応していないために自前でなんとかしています(泣)
 screen.cssscreen.css.gz の内容は全く同じなので,screen.css.gz については <MTInclude file="..."> タグを利用してファイル全体を読み込んでしまった後,拙作の CompressGZip を用いて gzip 圧縮を行っています(下図)(index.rdf となっていますが読替えてください)

構築順序に依存関係のある例

 上記の図のように screen.css.gz を正しく生成するためには,自身の再構築に先立って screen.css の構築処理が事前に完了している必要があります。今までは,まず screen.css を再構築してから screen.css.gz の再構築を手動で行っていました。順番を逆にしてしまうと,両者のファイル内容に違いが出てしまいます。
 このような煩雑な手間を解消するために,IndexTemplateRebuilder を利用して,screen.css.gz内から screen.css の再構築を行うように <MTBuildIndexTemplate>タグを追加しました。これによって,screen.css.gz 一つを再構築するだけで,自動的に screen.css の再構築が行われるようになり,その構築を待ってからファイルの読込み・圧縮が行われるようになります。

使い方の例 2. 特定複数のインデックスのみを一括で再構築する

 記事の微妙な言い回しを書き換える程度のちょっとした更新であれば,殆どのインデックスは再構築される必要がありません。また,コメントが投稿されたり,トラックバックを受信した場合も,全ての記事一覧RSS など,再構築される必要のないインデックスが殆どです。そのため,当サイトでは,不要な再構築による負荷を削減する目的で,最新のコメント/トラックバックを表示するためのインデックスを除いて自動で再構築が行われないように指定しています。
 しかしこれでは逆に,新しい記事を公開する際には,トップページや ,サイトマップなどなど,幾つものインデックスを忘れないように手動で再構築することになります。これがなかなか大変で,実際には時々 の再構築を忘れて,更新の通知ができていなかったことも何度かありました。
 そこで IndexTemplateRebuilder を利用して,記事の公開時に再構築すべきインデックスを一括で再構築するためのインデックスを一つ作ってしまいました(あぁ,ややこしい)。記事を公開する際には,この一つを再構築するだけで必要な全てのインデックスが漏れなく再構築されるようになります。このインデックsには "【記事の公開/修正完了時に再構築する】" のように判りやすい名前をつけています(苦笑)

IndexTemplateRebuilder のダウンロード

最新版のやバグレポートはIndexTemplateRebuilder の trac レポジトリでも行っています。

タグリファレンス

MTIndexTemplateRebuilder 変数タグ
 name パラメータで指定されたインデックスを強制的に再構築します。blog_id パラメータを指定することで,他のに属するインデックスも対象にできます。再構築は同期的に行われますが,async または background パラメータを指定すると,可能であればバックグラウンドで非同期的に再構築が行われます。このタグ自体は何の文字出力も行いません。

この記事を読んだ人はこんな記事も読んでいます ?

その他の関連する記事


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事のトラックバック URL

コメントを投稿する

 (必須/公開)
 (必須/非公開)
 

コメントスパム防止のため投稿前に ランダムな数字 ? を入力してから投稿してください。 お手数ですがご協力のほど宜しくお願いいたします。(必須)