CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

最近、MTが重過ぎる。。。
記事が100件を超えたぐらいから、全ページの再構築に5分以上かかるようになってしまいました。最大で10分近くかかることも。
そこで、MTの高速化に効果があるといわれているPHPのモジュール化を試してみました。

MTのPHPモジュール化とは

ずばりMTのPHPモジュール化とは、MTの構成を一部PHP化することで再構築の負荷を減らします。

MTの再構築では記述されたテンプレート内のMTタグがプログラムに解釈され、ページが生成されます。つまりは、MTタグの命令が多いほど再構築には時間がかかります。そこで、MTタグを減らせば再構築スピードも速くなるはずです。

例えば「最新の記事」。「最新の記事」は一般的に全ページのサイドバーに組み込まれます。これをふつうに100ページの記事を再構築するとなると、単純に「最新の記事」を生成するロジックが100回実行されます。もちろん「最新の記事」だけではないので、ページが増えれば累乗的に負荷が大きくなることが理解できます。

そこで、PHPのモジュール化をすると「最新の記事」は一度しか生成しません。生成した結果をPHPで全ページに読み込ませるというしくみです。

実際にPHPモジュール化してみる

実際のPHPモジュール化の手順ですが、まずPHPが動作する環境を用意します。
デフォルトではMTで生成されるファイルは拡張子が「.html」ですが、これを「.php」に変更します。または、拡張子が「.html」のままでPHPの実行を可能にします。

次に、「最新の記事」を生成している部分を切り出して、インデックステンプレートとして静的なページを出力するようにします(任意に「recent_list.html」など)。
最後に、サイドバーなど「最新の記事」を表示したい部分に上記のファイルを読み込むようにPHPで記述します。

<?php readfile('<$MTBlogURL$>recent_list.html'); ?>

私の場合、100件ちょっとの規模で、いくつかPHPモジュール化できるところに実施した結果、これまで5分以上かかっていた全ページ再構築が約40秒と短縮されました。

MTの高速化というところでは、一番効果のある対策だといえるかもしれません。
しかし、記事が1000件、1万件となる場合を想定すると、環境としてMTは向いてないかもしれませんね。

このエントリーをはてなブックマークに追加

Comment

Monthly Archives

Search