全エントリをPHP化してみる。
MovableTypeはなかなか高機能である。高機能であるが故に
- 記事が増えるとエントリー(記事)を投稿し、反映されるのに時間がかかる(平たく言うと重い)。
という問題がある。特にここのblogのように非常に非力なサーバを使用していると、エントリ数が多くなくてもこの問題は深刻である。
ということで、負荷を軽減するために、まずはエントリの本文のみ別途保存して、アーカイブ・インデックスからincludeするようにする(いわゆる「本文のモジュール化」である)。これにはPHPを用いて、動的にページを生成するのである。これは、MovableTypeの生成ファイルのPHP化とモジュール化を参考にした。ただし、件のページとはバージョンが違う(3.2-ja-2)ので、設定のどこをいぢるかは探す必要があった(が、基本的には何も変わらない)。我がサーバではPHPの呼び出し方も違ったし。
3.2-jaでの手順
- [アーカイブテンプレートの作成:メインメニュー > BLOG名 > テンプレート] で 「アーカイブ」タブを選び、「テンプレートを新規作成」を選択し、「テンプレート名」を適当に(参考元では"Entry Body"とある)、「このテンプレートにリンクするファイル」を空欄に、「テンプレートの内容」を<$MTEntryBody$>とのみ記述して、保存。(エントリの本文だけを抽出する設定を行っている)
- [環境設定 > 設定]「公開」タブを選び、「公開」セクションで、「アーカイブの拡張子」をhtmlからphpへ変更。引き続き、「アーカイブマッピング」セクションでは、「アーカイブマッピングの新規作成」をクリック。先ほど作成した"Entry Body"を選択して追加。このとき、「優先」は「エントリー・アーカイブ」を選択したままにしておく。「出力フォーマット」は<$MTArchiveDate format="%Y/%m/parts/%d_%H%M"$>_body.phpへ変更(これについては、次の項での記述と一致してれば良く、任意でよい)。
- 次に、あらゆるテンプレート(エントリーアーカイブ、カテゴリーアーカイブ、日付アーカイブ、)に存在する「<$MTEntryBody$>」という記述を<?php include"<$MTBlogURL$><$MTArchiveDate format="%Y/%m/parts/%d_%H%M"$>_body.php";?>と置換。
- すべてを再構築
とうまくいくはずが、我が家のマシンではPHPがうまく動いていなかったようだ。ということで、/etc/httpd/conf/httpd.confを変更。
LoadModule php5_module modules/libphp5.so
</IfDefine>
<IfDefine HAVE_PHP5>
AddModule mod_php5.c
</IfDefine>
<IfModule mod_php5.c>
AddType application/x-httpd-php .phtml .php
AddType application/x-httpd-php-source .phps
</IfModule>
なんとか、無事にすべてPHP化できた。次は、右コラムのモジュール化に挑戦してみたいと思うのだ。