WordPressチューニング: WP Super Cache 導入

前回の記事APC (Alternative PHP Cache) を導入したものの、パフォーマンス・チューニングの目標値にまだ達していないので、WP Super Cache も導入する。

WordPressのページ・キャッシュには WP Super Cache のほかにも W3 Total Cache も有名だが、ゆっくりと…: WordPressキャッシュ系プラグインの比較とサイトに適した選び方 によるとボクのサイトには WP Super Cache のほうが良さそうだし、いろいろなキャッシュを同時に使うと古いデータがどこでキャッシュされているのかなどのデバッグが難しいので、まずはシンプルな WP Super Cache を試し、それでも目標に達せない場合 W3 Total Cache を検討することにした。

ページ・キャッシュを導入するに当たって気になるのは、左ペインにある「最近の人気記事」が正しくカウントされるかどうかだ。キャッシュから読み込むことで「最近の人気記事」のランキングがリアルタイムに更新されないことは気にならないが、キャッシュから読み込んだ場合にはカウントされないとなると、このウィジェットの意味をなさない。ありがいたいことに、ボクの使っている WordPress Populars Posts のChangelogの2.0.0に、Ajaxを使用することで WP Super Cache などのページ・キャッシュに対応したと書いてあるので問題なさそうだ。

WP Super Cache の設定はDescription の Recommend Settings を参考にして、以下のものをオンにした。

  • キャッシュファイルの提供にPHPを利用する
  • ページを圧縮し、訪問者により速くページを供給する
  • 304 Not Modified ブラウザーキャッシング
  • 既知のユーザー向けにはキャッシュしない
  • キャッシュリビルド
  • モバイル機器サポート
  • 追加のホームページチェック
  • 除外するユーザーエージェント: (なし)
  • プリロード:
    • 1400分毎にリフレッシュ
    • 520件の投稿をプリロード
    • プリロードモード

ログインしていると(既知のユーザーだと)キャッシュされないのは編集作業には適しているけど、このままでは WP Super Cache が効いているかどうか分からないので、WordPressから一度ログアウトしよう。メインのWebブラウザーでログインして WP Super Cache の設定を行い、別のWebブラウザーでログインせずにページを表示すると作業しやすいだろう。WordPressのそれぞれのページのソースを表示して、最後に以下のような記述があり、再読込みしても日時が変わらなければ WP Super Cache は正しく動いている。

ところが、ボクの環境では、個別投稿ページは問題なくキャッシュされるものの、http://rewse.jp/blog/ は再読込みするたびに日時が変わる、つまり再読込みのたびにキャッシュを再作成してキャッシュから読み込まないという問題が起きた。これは WP Super Cache のタブ「簡易」にあるキャッシュテスターを使うと、以下のように表示されることからも分かる。

ソースコードを追ってみると、この問題は WP Super Cache 0.9.9.9 のバグであることが分かったので、フォーラムで報告しておいた。具体的には、WordPressの「設定 > 一般 > WordPressのアドレス (URL)」にディレクトリが含まれており、「設定 > パーマリンク設定 > 一般的な設定」が /(スラッシュ)で終わらないときに起きる。ボクの場合は以下のようになっていたのでこのバグを踏んだ。

WordPressのアドレス (URL) http://rewse.jp/blog
パーマリンク設定 /p/%post_id%

ボクの環境では手っ取り早く以下のように直しているが、0.9.9.9以降のバージョンで開発者がきれいに直してくれることだろう。

この修正により、キャッシュテスターも以下のような表示に変わった。

また、キャッシュから返されている http://rewse.jp/blog/p/4165 にアクセスするたびに以下のSQLの結果が1ずつ増えるので、WordPress Populars Posts が正しく動いてるかも確認できた。なお、WordPress Populars Posts はログインしているユーザーのアクセスはそもそもカウントしないので、ログアウトしてから試す必要がある。

それでは WP Super Cache によってどれだけ性能向上したかabを実行してみよう。

チューニング前の Requests per second が0.56#/secだったものが100.47#/secに達した。目標の20#/secも超えたので、これにて今回のチューニングは完了とする。

チューニング内容 #/sec 倍率
未チューニング 0.56 1.00
APC導入 0.92 1.64
WP Super Cache 導入 100.47 179.41
参考: 静的ページ 204.13 364.52

2 thoughts on “WordPressチューニング: WP Super Cache 導入”

  1. こちらの記事、非常に参考になりました。ありがとうございます。
    余談ですが記事下のGのイメージ広告がChromeだとクリックできませんね。
    ちょっと私の環境下だけだったら申し訳ないです。

  2. 少しでもお役に立てたようで良かったです。

    広告の件ですが、私の環境ではMac版もWindows版も広告がクリックできました。配信された広告側に問題がったのかもしれませんね。

コメントを残す