このブログ、MovableTypeをプラットフォームに使用しているのですが、段々と再構築に時間がかかるようになってきてしまいました。もしも全エントリーを再構築すると、半日程度の時間がかかってしまいます。
再構築の時間がかかる要因
この再構築に時間がかかるようになった原因は主に2つです。一つは個別エントリーアーカイブに使用しているプラグインの中に処理の重いプラグインが2つ含まれていること、そして2つめはエントリー数が既に2000をオーバーしてしまったことです。
まず処理の重いプラグインですが、一つはランダムにエントリーへのリンクを生成してくれるプラグインです。そしてもう一つは、文章中の言葉を登録しておいたサイトへのリンクへと置き換える「KOTONOHA」というプラグインです。
再構築時間短縮のための対策
再構築に時間がかかると、ちょっとしたデザインの変更も、とんでもない時間がかかってしまうので、対策について検討しました。思いついたのが以下の3点です。
- 負荷の高いプラグインをはずす
- データベースを処理性能の良いデータベースに変更する
- サイトにSSIを導入してページを再構築するときの負荷を減らす
- ダイナミックパブリッシング機能を使用する
この一つ一つについて整理していきたいと思います。
まず負荷の高いプラグインを外す方法については確実に効果が出ることは判っているのですが、どうしても、原因になっているプラグイン2つについてはこれからも使っていきたいプラグインだったので、今回は外さないことにしました。
2つ目のデータベースの変更についてはもしかすると処理性能が大きく変わるかもしれません。現在はMovableTypeでMySQLを使用しています。さくらインターネットではMySQLについては専用のデータベースサーバーで処理がされます。このデータベースサーバーについては現時点で11台あるようなのですが、運の悪いデータベースサーバーに割りあたってしまうと、負荷が高くて、データベース処理に時間がかかってしまう場合があります。
一方でMovableTypeではSQLiteというDBMSも使用することができます。噂によるとこのSQLiteは動作も軽く性能も良いようなので、MT-DB-CONVERT.CGIを使ってデータベースを変換し、mt-config.cgiの内容のうちデータベースに関する部分を書き直しました。そして再構築を実施してみました。結果としてはほとんど再構築の時間に変化はありませんでした。
3つ目は個別エントリーの中にある各要素をモジュール化して別テンプレートにします。そして、もとの個別エントリーのテンプレートの中にはSSIのINCLUDE構文を使用して、読み込むようにしました。こうすると、サイトを表示するときには負荷は高まりますが、 再構築のときには変換しなければいけないタグの数は圧倒的に減るので再構築時間が減るはずです。実際にやってみました。個別エントリーアーカイブのテンプレートの中身はSSIのINCLUDE構文ばかりでスカスカの状態になりました。ここまでやると、確かに再構築時間は減りました。2割程度は減ったような気がします。
そして4つ目のダイナミックパブリッシングですがこれはMovableType\が準備している機能です。
この方法についてはまだ確かめていません。抜本的に再構築が不要になる場合もあるので、きっと効果は高いと思います。時間を見つけてトライしたいと思います。
【2021/09/10追記】
WordPressへ乗り換え
その後、こちらのブログはWordPressに乗り換えをしました。WordPressは呼び出しがあったときに動的にページの生成をするため、まとまって再構築をする必要がなくなりました。
ページを描画するのに必要な時間は、静的なページを表示するときよりも時間がかかってしまいますが、サーバーの性能の向上やキャッシュの仕組みの普及に伴って、改善されつつあります。
コメント
MovableTypeで再構築時間を早くする方法
この正月休みでMovabletypeに色々なカスタマイズを加えました。特に個別…