Tifoさんとこで紹介されてた再構築軽量化とData量の軽減の為のカスタマイズです。
実は前々から気にはなってて、何度か簡単に挑戦してみてはいたんですが途中で面倒になってほったらかしにしてました(苦笑
現在うちでのエントリーも700を越えた辺りになってまして、正直3.2くらいから以降はまともに全体の再構築が出来ないほどに動きが重くなってました。
デフォルトの、再構築するエントリー数は40個毎となってるんですが、そんなのじゃ途中で500エラー出まくりでとても最後まで再構築できませんで、最終的には8とか6とかの設定にしてた事もあって、再構築に30分で終らないとか・・・もう正直やってられないなというところまで行ってました。
で、MTには再構築を含む動作を軽く出来るようなカスタマイズがいくつかあるんですが、その中でうちの現状の環境でも手を付けられそうな「テンプレートのモジュール化」を実施した次第です。
結果的には、再構築の動作が昔のバージョンのMT程度には軽くなった感じです。 一度に30個程度のエントリー数ならリビルドにも成功しますのでこれなら満足。 エントリー数が増えれば増えるほど再構築に時間が掛かる様になるのは当然の事でしょうし。
MTのカスタマイズ自体に関しては毎度うちのblogでも使用させて頂いているテンプレの作者様blog「小粋空間」様のところでいろいろご紹介されてますので、具体的にうちでどうしたかという説明だけを紹介しておきます。
テンプレートのモジュール化をするに当たってまず、データのphp化が必要になります。 php化する事によってモジュール化された個々のデータを1つのページ上に貼り付けるイメージなのですが、htmlのままだとそれが出来ません。
ただ、「php化する」というのにも幾つか手段がありまして
1. 純粋に出力データをphp形式に変更する方法。
2. 従来通りhtmlで出力されるデータをphpとして解釈させる方法。
うちでは後者を選択しました。
理由はデータ形式をphpにしてしまうと、現在うちのblogで使用しているプラグインの一部がphpプラグインとして提供されていないものが存在し、それが思惑通りに動作してくれないからです。
それとphpにしてしまう事で今までの記事への外部から貼って頂いてる様なlinkが切れてしまうのを防ぐ為、Redirect設定を記述する必要が出てくるのですが、html形式のままだとLink切れの心配が無用・・・なにしろ以前のデータ名と何も変わらないからです。
では具体的方法を順に追っていきます。
1. Movable Type の PHP化 (html のままPHPを有効にする)
方法としてはコチラで紹介されている「1.AddType ディレクティブによる設定」を選択しました。 ロリポップでも問題なく動作してます。
この時.htaccessをアップロードした時点でそれまで生成されてるhtmlデータがphpとして解釈されますので、小粋空間製テンプレートを使用されてる方はhttp://www.koikikukan.com/archives/cat_119.phpの下方に記述されている「3.XML宣言の修正」をお忘れなく。
これをしないと
というエラーメッセージが出てしまい、ご自分のblogが見られません。 うちでは表示させたい各テンプレートの先頭行をPHPが解釈可能なXML宣言形式に修正しました。
2. 各テンプレートで重複してる部分をモジュール化する
元々のMovable Typeのテンプレートは、メイン・ページ、各種アーカイブ・ページで部分的に重複している部分も全て重複して生成しています。
なのでカスタマイズを進めて記述、構造が複雑になればなるほど、その複雑さが増した部分もエントリーの数だけ重複して生成する事になります。
エントリー数が増える事と、記述・構造が複雑化する事とで再構築がどんどん重くなっていきます。
この「見掛け上同じ部分」を別途生成し、それを呼び出して表示させる事が出来ればその重複してる分の生成に掛かってた時間は1回分で済む事になる・・・とこういう訳です。
では具体的に進んでみましょう。
①各テンプレートで重複してそうな部分をモジュール化する。
うちのblogでは2箇所以上で使われてる部分をモジュール化してみました。
左サイド:
・エントリー・リスト
・コメント・リスト
・トラックバック・リスト
右サイド:
・カレンダー
・検索欄
・カテゴリー・リスト
・月別アーカイブリスト
・リンク集
コレだけの部分が2箇所以上で重複、右サイドにおいてはカテゴリー・アーカイブ、月別アーカイブでも同様にしてますので4種類のテンプレートで重複していました。
これらを全て一つ一つのモジュールとして新規にテンプレートを作成し、単独で生成するのです。
② 元のテンプレートからモジュール化した部分の記述を、モジュール化されたhtmlを呼び出す記述に変更する
細かな説明は小粋空間様内、
・Movable Type の PHP モジュール化の仕組みについて(その1:概要)
・Movable Type の PHP モジュール化の仕組みについて(その2:具体的動作とMTIncludeとの違い)
・Movable Type の PHP モジュール化の仕組みについて(その3:変更方法)
や、Crossbreed様内、あなたのmovabletype、重たくないですか?(テンプレートモジュール化)辺りに詳しく紹介されてますので、参考にしてみてください。
※ ここでうちの場合、少々問題が発生。
ただモジュール化するだけなら先述の通りphpにする方が分かりやすくて手っ取り早いかもしれません。
うちではこのカスタマイズの前に、ご覧の通りサイド・バーの折り畳みを導入してまして、これの月別アーカイブの折り畳み部分が動作しなくなる問題が発生しました。
何分もともと専門的なことには疎く、他人様の紹介してくださってるカスタマイズ方法を参考に進める位の方法しか取れませんので詳しい事は分かり兼ねますが、どうやら「月別アーカイブの折りたたみに使用しているArchiveDateHeader プラグイン、ArchiveDateFooter プラグインがphpで動作するものとして公開されてないので、phpでは動かない」という事のようです。
で私の取った手段として、それらのプラグインを使用してるjavaスクリプト部分の記述だけはモジュール化した部分から外し、元のテンプレートに残した状態にしてみました。
解釈が正解かどうかはよく分かってないのですが(苦笑 とりあえずこの方法で思惑通りに動かす事には成功しています。
こう書いてしまうと公開して頂いてる手法を用いて、自分のテンプレを編集するだけの非常に単純な作業っぽいのですが、実際にどう動作するか、どの手法が一番自分の環境向けなのかをいろいろ試行錯誤していたので、このためだけに結構時間が掛かってしまいました。
部分的にスクリプトが思惑通りに動かなかった時にはどうした物かと冷や汗をかいてみたり(苦笑
で、結果としてblog全体の再構築が非常に軽くなった事、全体としてのデータ量が30MB程スリムになった事が分かっています。
再構築は8エントリーずつ位にしないと途中でエラーが出て止まってたのが、今では30エントリーずつにしても最後まで再構築出来るようになりました。
もちろんその為の時間もかなり短縮してます。
Comments [2]
truthさん
無事モジュール化出来た様でおめでとう御座います~^^
なんか私がやったものよりも更に複雑化してますね@@;
うちの場合、ぽてさんの所よりもエントリー数が半分ぐらい少ないのでかなり軽くなりましたし、
容量も軽量化されました。何よりも500エラーがなくなったことが精神的にもgood(w
兎にも角にもお疲れ様でした!
Chapaさん
いやはや、おかげさまで何とか成功しました。
かなり快適になりましたけど、デフォルトでこれくらいの動作してくれないと使えないですね実際。
また気が向いた時にちょっとずついじってみますよ(笑
コメントする
※ コメントは認証されるまで公開されません。ご了承くださいませ。