Movable Type Background Rebuilder Plugin を作った理由。
公開日 : 2007-06-29 10:00:08
動的生成・静的生成がちょっとした話題になっている? わけですが、拙作のプラグインBackground Rebuilderも某所でとりあげられてたりしてますね(一時アクセスが増えました)。
少しこのプラグインについて補足しておきます。
まず、ちょっと誤解を招く書き方をこれまでしていたかもしれませんが、このプラグインで全再構築を行った場合、全再構築をコマンドラインで行った時とほぼ同様の負荷がかかります。ですのでプロセスが一定時間を超えるとkillされる環境ではこのプラグインを入れてもおそらく解決はしないでしょう。
『「CMSの体感速度を上げる」ことで制作者のストレスを軽減する』のがこのプラグインのコンセプトだと考えてもらった方が良いでしょう。
むしろ全再構築よりも各エントリーの保存時の体感速度の速さが僕には重要です。静的・動的の話の際に書き忘れましたが、MTをBlogではなくサイト制作ツールとして使う場合(しかも運用ではなくオーサリングプラットフォームとして使う場合は)閲覧者はクライアントと制作会社だけです。ページの閲覧よりもCMSを操作している時間の方が長いわけです。
こういった場合は、制作する側がストレスがないのが一番です。動的生成でも良いのですが、「MTを使用して静的生成ベースでサイトを制作している際に制作者のストレスをなくし作業効率を上げること」がこのプラグインを作った一つ目の理由です。
以前以下のエントリーを書きましたが、このエントリーの最後で書きかけのまま放置していた事実? についてここで紹介しておきます。
(要は、Movable Type Background Rebuilder Plugin に手を入れて、再構築の順番を変えたのだ。)
高速化のために<$MTInclude file=...による共通部分の外部ファイル化という方法があるわけですが、共通部分をインデックス・アーカイブとしている場合に一つ問題が起こります。
新規のエントリーを保存時する瞬間は、外部の共通ファイルは古いままです。例えばこのブログの「最近のエントリー」等が反映されないのです。全再構築を行う際も「エントリー」が先に再構築され「インデックス」が最後に再構築されますから、右側の共通部分は普通に再構築を行う限りは常に1バージョン古いものになってしまいます(インデックスが先に公開されると時間差の関係で一瞬リンク切れ状態になりますのでCMSの振る舞いとしては正しいのだと思いますが)。
Background Rebuilderプラグインでは、エントリーの保存時、あるいは全再構築時に「インデックス・アーカイブ」を先に再構築するようにしています。こうすることで常に最新のファイルがインクルードされるようになります。
インクルードファイル化したことで「こっちを先に再構築しなきゃ」といったことを意識する必要がなくなります。
これが僕がBackground Rebuilderを作った「もう一つ」の理由です。
こちら↓のエントリーで書かれていることは、つまりはこういうことではない? ...のかな?
試しにやってみようとソースコードを見てみましたが、まだ良くわかっていません。テンプレートを外部ファイル化して、外でスクリプトを使うか人手でのテンプレート修正と組み合わせでやるほうが楽そうです。使い勝手的にはプラグインに出来ればベストかもしれません。