2008年03月12日

javascriptでMovableTypeを軽量化する

このブログはMovable Type ver 3.33で書いてるんだけど、コンテンツが350を超えるあたりから再構築が超遅くなってきた。どのページにも表示される「カテゴリリスト」などは、当該ページを構築する際にそれぞれHTMLファイルに書き込まれている。そのために、カテゴリやエントリの数が増えてくると文字通り「幾何級数的に」サーバー側の負荷が増えてくる。特に困ったのが再構築中にエラーで止まってしまうことで、これを避けるために一度に再構築するエントリ数を減らして対処してきた。当初は40だったのが9まで減らさないと、再構築が止まってしまうのだ。
2007年の12月に追加して以来、軽量化の方法を探ってきたんだけど、つい最近すごいサイトを見つけた。各ページの作者さんに感謝!!

つまり、どのページにも同じ内容が表示される部分は共通モジュールとして別ファイルにする。そしてその内容をJavascriptで書く。当該ファイルを一度再構築すれば、その共通モジュールを参照しているページを再構築する必要はなくなる。しかも、参照しているページの容量も小さくなる。

すごい発想の転換。上記のページにもあるが、従来サーバー側で負担していた負荷をクライアント側に分散しようという発想だ。しかも、その負担具合は極小さな表示なので、ストレスはほとんど感じない。

そして、上記サイトを参照しながらいろいろやってみた。これは、よくあるテンプレートを適用するだけというようなものではなく、かなり「脳に汗をかく」必要はあるのだが..やり始めてみるととにかくおもしろくなる。そして、再構築のスピードがみるみる速くなっていくのが快感だった。

さて、このブログでやってるのは 左サイド上の「このエントリが属しているカテゴリのサブカテゴリ&エントリー一覧」右サイドの「カテゴリーツリー」および「月毎の記録」の3カ所。Javascript化の一番の利点は、あるエントリを追加すると、そのエントリが含まれているカテゴリの他のエントリにある一覧も再構築することなく更新されることだ。同じ事がカテゴリツリーや月毎の記録にも言える。ちょうどのぞき窓が開いている状態ということだ。

結局、再構築時のエントリ数は40に戻した。しかも物凄く速い。以前ならば、すべてを再構築ボタンを押してからお風呂に入って、あがってきてもまだ構築中なくらい、長い時間がかかったのだが、今は数分で終わるようになった。

トラックバックURL

このエントリーのトラックバックURL:
http://saiquet.sakura.ne.jp/8869/mt-tkereb.cgi/427