笑けるほどエライPHP Ninjaのキャッシュコントロール

私も開発に携わらせていただいたPHP Ninjaですが、おかげさまで予想以上の皆さんにベータテストにご参加いただいて、IPアドレスを追加発注するという事態に至りました。

ファーストサーバーデジタルキューブ一同で感謝感激です。

今回は、PHP Ninjaに搭載されているリバースプロキシと、そのキャッシュをコントロールするためのプラグインのお話です。

 WordPressをリバースプロキシ上で使うための注意

PHP Ninjaでは、デフォルトでリバースプロキシを設置することでフロントエンド側のパフォーマンスを飛躍的に向上させています。

ただし、詳しい方はすでにお気づきかと思いますが、静的にキャッシュしてしまうというテクニックは、非常に使い方が難しい技術でもあります。

WordPressでリバースプロキシを使う際の注意点は概ね以下のような感じです。

セキュリティ

  • /wp-admin/以下のすべてのページでキャッシュさせないこと。
  • ログインユーザーに対しては、すべての画面でキャッシュさせないこと。
  • コメント投稿者のメールアドレスや投稿者名が入った状態でキャッシュさせないこと。
  • パスワード保護がかけられたページがキャッシュされないこと。

以上は、必ず何らかの手を打たないとセキュリティリスクをもたらす可能性があります。

WordPressの機能を活かすための対策

  • コメント投稿時や記事の投稿時など適切なタイミングでキャッシュが初期化される必要がある。
  • 予約投稿時には指定された時間にキャッシュが削除されて新しい記事が反映される必要がある。
  • nonceというワンタイムトークン(管理画面やContactForm 7などのプラグインで使用)がキャッシュの有効期間に合わせて設定される必要がある。

リバースプロキシを使用した場合に発生する不具合

  • コメント投稿者のIPアドレスが正しく取得できない。
  • パーマリンク設定の設定値にindex.phpがはいってしまう。

などなど。

たいへんですよね。うんざりです。

残念ながらネット上にあるWordPress + リバースプロキシに関する記事で、これらすべてに対する対策を解説したページは1つもありません。

しかしご安心を。PHP Ninjaでは上述の問題全てを Nginx Cache Controllerというプラグインで対策してるんです。

Nginx Cache Controller について

このプラグインはNginxリバースプロキシ上でWordPressを使用する際に必要な機能がびっしり詰まったプラグインです。

まず重要なポイントがひとつ。

PHP Ninjaではこのプラグインを有効化した時に初めてリバースプロキシが有効化されます。

(厳密にはこのプラグインが有効化されていないとキャッシュの有効期間がゼロ秒になります。)

なので、PHP Ninjaの本当の底力をご覧になりたいなら、ぜひこのプラグインを有効化してください。

詳しい説明は、後日公式サイト等で公開していきますが、ほとんどの場合以下の設定で十分です。

キャッシュの有効期間はデフォルトで86400秒とやや長めになっています。

こうしておくとGoogleウェブマスターツールなどのサイトの平均読み込み速度が飛躍的に早くなりますのでおすすめです。

モバイル対応はどうしたらいいんだ?

そこも心配ご無用。

その場合は思い切ってNginx Cache Controllerを無効化しておきましょう。
(adminバーでキャッシュを削除することもお忘れなく。)

そしてリバースプロキシの代わりに、WP Super Cacheを入れちゃってください。

PHP NinjaはディスクのI/Oがとにかく高速なので、WP Super Cacheを有効化するだけでも他社のクラウドでリバースプロキシを導入した場合と同等の性能を引き出すことが可能です。

その上でWPTouchなどのモバイル系プラグインをインストールしましょう。

もうこれで全て解決。みんなハッピーです。

ちなみに

リバースプロキシとWP Super Cacheを同居させてさらなる高速化を期待しても無駄です。

WP Super Cacheはリバースプロキシにキャッシュをさせないためのレスポンスヘッダを送出してますので、WP Super Cacheを有効化した時点でリバースプロキシは仕事をしなくなります。

以上、PHP Ninjaは、まさにノウハウの集合体だということがお分かりいただけたんではないかと。

ぜひ、いろいろお試しください。