MTのダイナミックパブリッシング機構
カテゴリ: MovableType
MovableTypeは、3.0からダイナミックパブリッシング機能を備えるようになった。エントリーの数が増えてくると再構築に時間がかかるようになるという問題を、静的なファイルを発行せずに、その場で動的に表示することで凌ごうという機能である。ダイナミックパブリッシングは、主にそれほど見られないだろうアーカイブに対して行われるが、テンプレート単位に設定できるので、その気になれば全ダイナミックパブリッシングも可能である。
ダイナミックパブリッシング機能で最も気になるのが、URLからどうやって発行するページを求めているかということだ。特にアーカイブページのURLには任意のパターンが指定できるので、URLから求めるというのは事実上不可能に思える。とするとどうやってページを発行するのに必要となる、テンプレートとページのタイプ(インデックスや個別アーカイブなど)、そしてエントリーIDやカテゴリー名などの情報をURLから得ているのか。
分かってみれば単純なことだった。再構築を行うと、FileInfoというテーブルに発行したページの情報が記録されるのである。ここをURLで検索すれば、該当するページを発行する為の情報が得られるという訳だ。ダイナミックなページの場合、ファイルは出力されずにFileInfoだけに記録される。つまり仮想的に発行されている訳だ。このような仕組みの為、すべてをダイナミックパブリッシングにしても、サイトの再構築は必要となる。
PHP必須なのは、純粋にCGIなPerlでは遅そうという理由のようだ。Perlではできないという訳ではない。その為だけに簡易ながらもPHP版のMTライブラリを作ったというのはさすがというかなんというか。Berkeley DB未サポートというのも、単にPHP版ライブラリがSQLベタベタだからという感じがするが、これは頑張って対応する利点がないからだと思っておこう。いや、そもそもPHPからBerkeley DBにアクセスできるのだろうか。