今回は、YASAKANI Cacheをさらに高速にして、かつゼロデイ攻撃をブロックすることが出来る最速最強なエキスパートモードについて紹介します
YASAKANI Cache は SQLite を活用したページキャッシュプラグインで、他の有名なキャッシュプラグインに勝るとも劣らない最速レベルのキャッシュを実現しています
WordPress キャッシュプラグインの高速化の手法として使われていることはあまりないのですが、PHP には auto_prepend_file という、指定したファイルを一番最初に読み込む機能があります。WordPress プラグインとしてはちょっとイレギュラー手法とはなりますが最速のキャッシュを実現できる可能性があるので対応してみました (^^)
エキスパートモード
auto_prepend_file を使うとPHPプログラムを呼び出すときは、常に一番先に読み込まれるようになるので PHP プログラムとしては本当に一番先に実行することが出来ます
例えば、ユーザーがサイトのホームページを見ようとリクエストしたとします。すると通常はホームの index.php が一番先に処理されるプログラムとなるように設定されているのですが、auto_prepend_file として xxxxx.php が設定されていれば index.php より先に xxxxx.php が実行されるようになります
従って、drop-in の advanced-cache.php を使っているキャッシュプラグインよりも前段階でキャッシュ応答処理を行うことが出来るので、より高速なキャッシュ処理が実現できます
php.ini に auto_prepend_file を設定
YASAKANI Cache のキャッシュを有効化すると通常は次のような表示となります

ページキャッシュの設定表示は 有効 と表示されている状態です
エキスパートモードにするには、この画面に表示されている auto_prepend_file = “xxxxx” という文字列をサーバーの php.ini ファイルに追記してから Webサーバーをリロードして反映させます
正常に設定されれば以下のように自動的に動作モードが エキスパートモード と表示されます

auto_prepend_file の設定は、php.ini や .user.ini や .htaccess 等で行うことが出来るのですが、環境によっては使えないこともあります( 500 Internal Server Error
等のエラー)、また、使い方にも注意しないとサイトにアクセスできなくなったなんてことが割と簡単に起きてしまいます。
サイトの構成に合わせて php.ini や .user.ini や .htaccess 等を手動で編集するのが一番安全に設定できると思います。エキスパートモードとして php.ini 等のファイルを手動で編集して、指定された auto_prepend_file を記述すれば動作するようになります
※php.ini へ auto_prepend_file を記述した後に、これを有効にするには Webサーバーをリロードする必要があります
設定にはひと手間かかるし、レンタルサーバー等の環境によっては使用できない場合もあるのですが、php.ini 等を編集することが可能なら試してみて下さい
php.ini ファイルの編集可否や設定手順に関してはレンタルサーバー毎に異なると思いますので、ご利用のレンタルサーバーへお問い合わせください
エキスパートモードの2つのメリット
auto_prepend_file を使うと2つのメリットがあります
最速レスポンス
auto_prepend_file の使用で、どのくらいの効果があるかといえば、waiting(TTFB)時間が 1~2ms ぐらい速くなるだけなのでほとんど気が付かないレベルです
元々が高速なので、そこからの 1~2ms って結構大きいのでかなり満足しているのですが…
まあ、皆さんの中にもスピード大好きっていうこだわり派の方もいらっしゃるので、他の有名なキャッシュプラグイン等と比較してみて下さい。頭一つ抜き出せたかなと思っています (^^)
とりあえずタイプ別に設定を紹介しておきます
タイプ | ページキャッシュ | CSS/JS | ログ | セキュリティ機能 |
簡単にページキャッシュを試してみたいお手軽派 | 通常モード | 全て無効 | 無効 | 無効 |
スピードこだわり派 | エキスパートモード | 全て有効 | 無効 | 無効 |
スピード&セキュリティどっちも派 | エキスパートモード | 全て有効 | ログ+統計情報 | 有効 |
お勧めは、スピード&セキュリティどっちも派 の設定です。ログや統計情報の保存処理を伴うので若干遅くなりますが、ボットをブロックしたり、ブルートフォースやPHPへのゼロデイ攻撃の防御も行えるようになりトータルで考えればサイト全体への負荷も低減できる一番優れた設定となります
最強セキュリティ(ゼロデイ攻撃防御)
auto_prepend_file を使う本当の狙いはセキュリティの向上です。最速よりもこちらのほうのメリットが大きいです

WordPress では、プラグインやテーマの脆弱性のあるPHPへのダイレクトアクセスを通常はブロックすることは出来きないので、WAFや .htaccess を使用してブロックすることが多いのですが、auto_prepend_file を使ってもブロックすることが出来ます
auto_prepend_file を使うとPHPへのダイレクトアクセスが行われた時にどのPHPがアクセスされたかを調べることが可能になるので、プラグインやテーマ内のPHPファイルをダイレクトにアクセスされた場合に不正なアクセスとしてブロックすることが出来るようになります
ただ、wordpress は、通常の運用において wp-login.php や他にもいくつかのダイレクトアクセスが行われるPHPファイルがありますので、それらへのアクセスはブロックしないようにする必要があります
また、ログインユーザーがダッシュボードを表示して管理操作等を行うときには wp-admin 領域にある様々な PHPへもダイレクトアドレスが行われますので、ログインユーザの wp-admin 領域へのダイレクトアクセスは全て許可しています(セキュリティ的には甘くなりますが使い勝手を優先)
日本語環境では以下のPHPファイルへのダイレクトアクセスを許可してあります
- /index.php
- /wp-login.php
- /wp-signup.php
- /wp-activate.php
- /wp-mail.php
- /wp-comments-post.php
- /wp-trackback.php
- /wp-cron.php
- /xmlrpc.php
- /wp-admin/admin-ajax.php
- /wp-admin/load-scripts.php
- /wp-admin/load-styles.php
- /wp-content/plugins/wp-multibyte-patch/wplink.php
これ以外に、ダイレクトアクセスを許可する PHP ファイルがある場合には、設定画面からホワイトリストへ登録することでアクセスできるようになります
許可されているPHPファイル以外のダイレクトアクセスはブロックされるようになるので、 WordPress 環境においてはPHPへのゼロデイ攻撃に対しかなり強固になります。ただしセキュリティに絶対はありませんので安心は禁物です
この機能は下記記事を参考に実装しました
プラグインの使用を止める場合
プラグインをアンインストールしても php.ini の auto_prepend_file の記述と /wp-content 下の yasakani-cache-exload.php ファイルは残ったままとなっています
yasakani-cache-exload.php の処理は、YASAKANI Cache プラグインが作成した advanced-cache.php ファイルが存在しているか確認してから advanced-cache.php を実行しているだけなので、そのまま auto_prepend_file の記述を残したままでも問題はありません
ただ、使わないのに無駄な設定が残っているのが気になる方は、以下の手順に沿ってプラグインのアンインストールを行ってください
- YASAKANI Cache プラグインを停止してアンインストール
- php.ini ファイルを編集して auto_prepend_file 部分を削除
- Webサーバーをリロードして正常にサイトアクセスできることを確認
- FTP等で /wp-content 下の yasakani-cache-exload.php ファイルを削除
以上
エキスパートモードは、とても強力な2つのメリットがありますので、php.ini 等のファイル編集が可能ならぜひ試してみて下さい
有名ではないけど、最速最強なキャッシュプラグインを紹介しました (^_-)-☆