PHPでMT4のタグ検索を高速化

先日リニューアルしたPlayground@senmasa.comは、MT4で吐き出しています。また、すべてをタグで語ろうと試みています。エントリー数の割りにタグが多かったためか、タグ検索の一つ一つが遅くて閉口していたのですが、先日抜本的な対応を行いましたのでご報告します。

Playgroundのタグ検索は、TREND SPOTTINGさんで紹介されていた方法(MTの検索結果やタグのURLをすっきりさせる)を参考に、<ブログURL>/tag/<URLエンコードされたキーワード>という形式のURLに変更していました。ただし、TREND SPOTTINGさんの方法はURLの読み替えがキモでしたがこちらは<ブログURL>直下にtag.phpというスクリプトを用意してその中でcgiをインクルードするという方式をとりました。


もう、重いの何の。


しばらく放置していたのですが、借りているサーバーのCPU負荷がえらいことになってしまったのと、何よりも自分が耐えられなくなって修正を決意。
tag.phpの中でmtのデータベースに直接SQLを投げて結果を表示するという形に変更しました。その際、MTの各テンプレートモジュールは、サーバーサイドインクルードを「PHPのインクルードで処理する」としておくとtag.phpの中で同じインクルードを書くことでページデザインを統一できるのでお勧めです。

結果:良好。負荷ポイント数(私が契約しているサーバー屋さん独自の算出方法らしい)が、前日までは4000を越えていたのが0になりました。また、タグ検索結果を表示するのにそれまで15秒かかっていたのが1秒強まではやくなりました。
SQLとか、tag.phpの中身は恥ずかしいので書きませんが、そう難しくはないはずです。PHPの使える環境で同様の悩みをお持ちの方は検討してみてはいかがでしょうか。

アーカイブ

Link