ホーム / ネット文化 / あなたのmovabletype、重たくないですか?
Movable Typeあなたのmovabletype、重たくないですか?(テンプレートモジュール化)
現在ここクロスブリードもエントリ数400を超え、日に日に重たくなってきました。
一番やっかいなのが、ちょっとした変更の際のリビルド。以前テンプレートに変更を加え、indivisual archives(個別記事)のリビルドを行ったとき等の事。
沢山のエントリをリビルド。これがどうやらサーバマシンに負担がかかるようで、リビルドを行いしばらく待っていると、
サーバがダウンした
という経験があります。そしてサーバ管理者にこっぴどく叱られたという苦い苦い思い出が蘇ります。
そこで、まず考えたのが、「少しずつリビルドすればいいじゃねえか」という事。ぐぐってたら、ありました。
一番重たくなる、Indivisual Archives(個別記事)のリビルドが少しずつできます。これでとりあえず、リビルド時にサーバに負担をかけることがなくなりました。
しかし、フツーにエントリするときには、MainIndex、Date-Based Archive、Category Archives、Indivisual Archivesの4つについてリビルドする為、一件の記事のエントリに
5分も待たなくてはいけないという罠が。
ウチのつくりがどのページも3カラムにしている為にページ毎の構築に時間がかかっているので自業自得といえば自業自得なんです。
しかし、このmovabletypeのデフォルトテンプレートのシンプル過ぎる個別記事ページがどうにも納得いかない。というのも、個別記事についてるのは、「前の記事」「次の記事」「トップ」の3つのリンクのみ。
検索エンジン等で飛んできた方に非常に優しくないつくりになっているのです。
個別ページは軽くする為なんでしょうが、納得いかなかった僕は、個別ページも、カテゴリページも、同じように表示させるように変更した。その結果、重たくなってしまったのです。この辺がmovabletypeって使えねえ、と他のweblogツールから移行して来たヒトが嘆く原因なのかもしれませんね。
で、この問題を解決すべく、調査をしたのが、「ページのモジュール化」だ。
ページ毎の全く同じ部分をひとつづつリビルドするのではなく、再利用しようというもの。
結果、数分かかっていた記事のエントリが数10秒程度で終わるようになった。これには感動した。この感動を皆さんにも味わっていただくべく、解説してみようと、こういうわけだ。
まず、こちらのエントリを参考に各アーカイブファイルをPHP化する必要がある。ページ分割はしてもしなくても良い。
次に、各テンプレートのバックアップを取っておく。いつでも元に戻せるようにね。テキストエディタかなんかに保存しておくと良い。
バックアップをとったら、Main Indexのテンプレートを眺め、どこがモジュール化できるのかを考える。ウチならまず、「最近頂いたコメント」だ。これは便宜上各ページに配置しているが、どのページも同じものを使っている。
という事はモジュール化のチャーンス!だ。
まず、main index内のコメントの部分のみを別の所にコピーする。テキストエディタ使用の事。
サンプルは下記の通り。ちなみにの部分はコメント行になります。こういうのを入れておくと後で見返すとき便利。タメになるなあ(笑
MTの管理画面からTempleteの編集、
「新しいインデックス・テンプレートを作る」
をクリックする。そして次のように設定する
・テンプレートの名前 : commentlist
・出力ファイル名 : commentlist.php
・自動的に再構築する : チェック外す
・テンプレートにリンクするファイル : 空白
・テンプレートの中身 : 上でコピーしたテキスト
これで保存してリビルドすると新しいファイル、commentlist.phpが完成する。
ここで重要なのが上の「自動的に再構築する」。
リンクリスト等、記事と関係ない項目の場合はチェックを外す事。記事の投稿時にリビルド対象から外れるからだ。
次に、このcommentlist.phpをMain Indexに貼り付けてみる。phpの威力が発揮されるのはここからだ。
Main Indexのコメントの部分を丸ごと削除して変わりに
include("/(username)/public_html/commentlist.php"); ?>
これだけ!
これで上でコピーしたコメント部の記述がたった一行で終わる。
この調子で、MYBLOGLIST、BLOGPEOPLE、はてなアンテナもひとまとめ、カテゴリリストもひとまとめ、上部メニューもひとまとめ、オススメ音楽もひとまとめ。これだけでも充分リビルドは速くなるし、かなりの軽量化になるはず。
軽量化の他にも利点はある。
例えば、先のコメントリストの一部分の修正を行いたい際に、今までは全てリビルドしなくてはいけなかったが、モジュール化を施す事により、「commentlist.php」だけをリビルドするだけでよいのだ。激しく便利。
しかし、まだモジュール化できるところがあることにお気付きだろうか?
究極のモジュール化は、記事の部分のモジュール化だ。
まさか記事部までモジュール化とは気付かなかった。Boycott Street 221Bさんがやっておられました。すごー。
まず「新しいアーカイブテンプレート」を作成。そこに
とだけ入れて作成。テンプレートの名前は仮に「EntryBody」とします。
次に、新しいIndivisual Archivesの設定。
BLOGの設定 → アーカイブの設定 → 「新しく追加」をクリック
アーカイブの種類は「Indivisual」、テンプレートは先程作成した「EntryBody」とします。
次に、アーカイブの設定に戻って、「アーカイブファイルのテンプレート」のところに、先のEntryBodyを書き出すファイル名を設定します。ウチの場合は、
_body.php
とやってます。この辺から少し難しくなってくるかな。後少し。
次に、各ファイル(Main Index、Category Archive、Date-Based Archive、Individual Entry Archive)の
を
include"/(username)/public_html/archives/_body.php";?>
「username」はサーバによって違います。分からないヒトはサーバ管理者に尋ねて下さい。http://からはじまる直接パスでも可です。
これで完了。全てをリビルドしてみましょう。書き出したファイルは以前よりファイルサイズが小さくなっているはずです。
リビルド時間も大幅に短縮することができました。かなり感動します。
こういうカスタマイズって最初からやっておくべきかもですね。
04/07/31追記
Fenrir's BLogさんところで、驚愕の軽量化方法をされているようなので紹介します。
javascriptによってモジュール化を構築しています。確かにサーバに負荷が多少なりともかかるphpよりはクライアントサイドに弱冠負荷がかかるjavascriptの方が軽量化に関しては良さそうです。興味のある方は是非。ウチもやってみようかな。
スポンサードリンク
※このサイトはさくらインターネットのサーバを利用しています。
■gi(ギィー)福岡浄水通りの絣(かすり)と手作り雑貨のセレクトショップ
↑サイト内紹介記事
【PR】BTOパソコンの先駆者 FRONTIER