MovableType5(MT5)の動作について その1 カテゴリとタグ

Movable Type 5(以後MT)の動作について詳細に調べてみる。

MTの基本動作は、以下の2つ
  • 編集中のデータはMySQLなどのDBに保存する
  • 編集が終了したら、DB上のデータから、HTMLファイルに書き出す(再構築)
一度HTMLに書き出すことがMTの最大の特徴で、
静的なHTMLファイルにことにより、公開した時の表示性能を上げている。
その代わり、再構築が重い、というデメリットはあるが、
HTMLにしたときの表示の早さは、補って余りあるものといえる。

と、これがMTの基本的な動作だが、全部のページを静的なHTMLに
書き出すわけではない。

MTには似たような2つの機能である、「カテゴリ」と「タグ」があるが、
  • カテゴリはHTMLに書き出す
  • タグはHTMLに書き出さない
という決定的な違いがあるのが注意。
例を上げると、
「test」というカテゴリページのURLは、
http://localhost/my_test_website/my_test_blog/test/index.html
となり、
「test」というタグページのURLは、
http://localhost/mt/mt-search.cgi?blog_id=3&tag=test&limit=20
となる。

URLのとおり、カテゴリの場合はHTMLに書き出されているが、
タグページの場合は、mt-search.cgiがリクエストをうけて、
裏にあるDBに接続して、記事をリアルタイムで検索している。

この内部処理の違いは、ページ表示性能に直結し、

$ ab -n 300 -c 15 http://localhost/my_test_website/my_test_blog/test/
Requests per second:    865.23 [#/sec] (mean)

$ ab -n 300 -c 15 'http://localhost/mt/mt-search.cgi?blog_id=3&tag=test&limit=20'
Requests per second:    11.07 [#/sec] (mean)

と約80倍の違いになる。(カテゴリの方が80倍早い)

タグを静的HTMLに書き出すプラグインもあるみたいだけど、
デフォルトでは上記のような挙動になるので、
カテゴリで表現できるものはカテゴリで実装するようにした方がおすすめ、ということで。