サイト高速化チューニングも5か月間もやっていると手詰まってしまいました。
いよいよ残すはNginxのプロキシキャッシュかWP Super Cacheのキャッシュか?というところで、簡単に導入できそうなWP Super Cacheに手をだしてみました。
1.eacceleratorからAPCに切り替える
PHP高速化はeacceleratorを使っていましたが、WP Super Cacheや001 Prime Strategy Translate Acceleratorと相性の良いらしいAPCに切り替えてみます。
やったことはeacceleratorのアンインストール、次にapcをインストールして最後にhttpdを再起動するだけ。ついでにapc.phpをコピーしてAPCのコンソールも導入しましょう。
# yum remove php-eaccelerator
# yum install php-pecl-apc
# service httpd restart
# cp /usr/share/php-pecl-apc/apc.php /var/www/html/apc.php
2.WP Super Cacheを導入
WordPressの「ダッシュボード」から「プラグイン」→「新規追加」と進み「WP Super Cache」を検索します。表示されたプラグインをインストールします。
3.WP Super Cacheの設定
WP Super Cacheをインストールし有効化しただけではキャッシュ機能を利用できません。次の設定でキャッシュを有効にします。まず「設定」メニューの「WP Super Cache」を選択します。
「簡易」タブを開き「キャッシング利用 (推奨)」にチェックを入れ「ステータスを更新」ボタンをクリック。
「詳細」タブに移動し「ヒットしたページをキャッシュし、素早くアクセスさせる。 (推奨)」と「キャッシュファイルの提供に PHP を利用する。」にチェックをいれます。「mod_rewrite」の方がPHPより高速らしいのですが設定が若干厄介になるので今回はやめておきます。
また「304 Not Modified ブラウザーキャッシング。最後にリクエストされてから変更がないことを示す。 (推奨)」と「既知のユーザー向けにはページをキャッシュしない。 (推奨)」にもチェックをいれておます。一人で管理するサイトならチェックを入れなくてもセキュリティ的に問題はないと思いますが念のため。
まずはこの設定でWordPressでキャッシュを利用できるようになるはずです。
4.キャッシュの効果を確認
muninのcurlプラグインでキャッシュの効果を確かめます。WP Super Cacheを導入する前の6/5の22時頃まではtotaltimeが200msでしたが、設定後は約10msになっているのが分かります。
ただしこのグラフだけでは具体的な数値が分かりづらいので、チューニングに段階をつけて表にしてみました。
段階 | curl | ab -n 100 -c 10 | ab -n 500 -c 100 | |||
---|---|---|---|---|---|---|
start | total Time | Time taken | Requests/s | Time taken | Requests/s | |
チューニングなし | 623ms | 790ms | 10.48s | 9.55/s | – | – |
APC導入 | 110ms | 206ms | 4.02s | 24.89/s | – | – |
001 Prime Strategy Translate Accelerator キャッシュタイプ:ファイル |
96ms | 189ms | 3.10s | 32.21/s | – | – |
001 Prime Strategy Translate Accelerator キャッシュタイプ:APC |
84ms | 173ms | 3.05s | 32.75/s | 15.334 | 32.61/s |
WP Super Cache有効(デフォルト設定) | 88ms | 188ms | 3.22s | 31.06/s | 16.486 | 30.33/s |
WP Super Cache有効(キャッシュ利用) | 5ms | 8ms | 0.10s | 1005/s | 0.466 | 1073/s |
※「001 Prime Strategy Translate Accelerator キャッシュタイプ:APC」とは、PHP高速化にAPCを利用している場合のみ翻訳ファイルのキャッシュをAPCのUserCacheに置いて更に高速化可能なオプション。eacceleratorでは利用できません。
WP Super Cacheを利用しない状態でもcurlのtotal timeが200msを切っていたので約3倍の高速化を実現していましたが、WP Super Cacheを利用して適切なセッティングをするだけで一気に100倍高速化できてしまいました。キャッシュが効いた状態であれば圧倒的ですね。