WordPress をたった3分で3倍高速化する方法 [MO Cache]
3分しか時間がない人向け
- WordPress の管理画面を開く
- WP File Cache をインストールする
- MO Cache をインストールする
- 完了!設定の必要はありません
もう少し時間がある人向け
この記事は WordPress Advent Calendar 2011 の10日目の記事です。
今日は MO Cache という WordPress プラグインの紹介をしたいと思います。
先日初めて WordPress を使いサイトを作成したのですが、インストール直後からのあまりの遅さにびっくりし、そりゃあチューニング記事が人気になるよなぁなんて考えていました。しかし最近になって WordPress 3.3 Beta が出たためちょっと触ってみようかなと英語版をインストールしたところ、以前日本語版 3.2.1 をインストールした時よりも明らかに速いことに気づきました。
最初はバージョンアップで速くなったのかと思ったのですが、すぐに翻訳ファイルの読込みに時間がかかっていることが判りました。Xdebug のプロファイラで計測したところ実に全体の70%近くが翻訳ファイルである .mo ファイルの読込みのために費やされていました*1。メインの開発者達が英語版しか使ってないからこんなことになるんだ!と愚痴っていてもしょうがないので、なんとかしようと思い、できたのが MO Cache です。
MO Cache では .mo ファイルを読み込んだオブジェクトをキャッシュし、次回アクセス以降もそれを使いまわすことによって、約1/30の時間で .mo ファイルのデータをロードすることが可能になっています。MO Cache の特徴として WordPress 標準のキャッシュ機構である WP_Object_Cache (英語版) を使っているため、キャッシュを一括で管理でき、レンタルサーバではファイル、VPSではより高速な APC と何にキャッシュするかを柔軟に選ぶことができる点があります。
ただし、WP_Object_Cache はデフォルトではアクセスをまたいだデータのキャッシュは行わないため、MO Cache の恩恵を受けるには Persistent Caching Plugin を一緒にインストールする必要があります。Persistent Caching Plugin にどれを使えばいいかわからない場合は以下の優先順位で決めてください。
- すでに W3 Total Cache を利用している方
- W3 Total Cache の Object Cache 機能
- VPS や専用サーバで WordPress を利用している方
- 1, 2 のどちらにも当てはまらない方
Persistent Caching Plugin は MO Cache なしでも高速化にかなりの効果がありますので、使っていない方はこの機会にインストールすることをおすすめします。
説明は以上です。あとはインストールするだけ。冒頭にも書きましたが
- Persistent Caching Plugin からひとつ選んでインストールする
- MO Cache をインストールする
これで終わりです。MO Cache の設定は何も必要ありません。*2
ページキャッシュを導入している環境でも、初回アクセス時や管理画面などで効果を発揮します。100行程度のシンプルなプラグインで、入れておいて損はないと思いますので是非使ってみてください。
ベンチマーク
WordPress 3.3 RC1 日本語版をインストールし、WP Multibyte Patch を有効にしただけの状態で 10 ケースのベンチマークを取りました。ウェブサーバの外部からの計測ではなく Xdebug のプロファイラによる計測なので、ブラウザでアクセスした時の体感とは多少差があると思います。*3
上から
- APC なし、Persistent Caching Plugin なし
- APC なし、WP File Cache
- APC なし、W3 Total Cache で Object Cache Method が Disk
- APC あり、Persistent Caching Plugin なし
- APC あり、APC Object Cache Backend
- APC あり、W3 Total Cache で Object Cache Method が APC
となっています。
また ■ が MO Cache をインストールしていない状態、■ が MO Cache をインストールした状態です。
MO Cache をインストールするだけで文字通り3倍高速化されているのがわかります。*4
明日の WordPress Advent Calendar 2011 は @aka_aus_pd さんです。
*1:wp-settings.php の load_default_textdomain() の呼び出しだけで約65%
*2:利用しているプラグインの .mo ファイルがキャッシュされない場合は Must Use Plugin としてインストールすると改善します
*3:プロファイラを有効にしてベンチマークを取るのはおかしいという苦情は記事のタイトルに関わってきますので受け付けておりません!環境はさくらのVPS 1G, PHP 5.3.8, Apache 2.2.21, MySQL 5.5.19。各30回実行し中央値を採用しました。
*4:全体的に Persistent Caching Plugin 単体の効果が現れていないように見えますが、これはインストール直後でキャッシュして速くなるほどのデータがまだないためで、データが増えるほど効果を発揮します。