WordPress のページキャッシュを入れると、wp-config.php に define('WP_CACHE', true); を足すよう案内されることが多いですよね。あの1行、書かなくてもキャッシュは効きます。
手順はこれだけです。
- キャッシュプラグインを有効化する
-
.htaccess最適化を on にする - 以上。wp-config.php は触らない
速度を最後まで詰めたいときだけ、あとから WP_CACHE を1行足します。
// 標準モード:これは書かなくてよい
// define('WP_CACHE', true);
// ドロップインモード:速度を詰めたいときだけ、任意で足す
define('WP_CACHE', true);
以下、なぜ書かずに効くのかを裏から説明します。
なぜ WP_CACHE を書かなくても効くのか
いちばん速い経路が、そもそも PHP を通らないからです。
生成済みのキャッシュ HTML は、Apache が .htaccess のルールで直接返します。ここでは PHP が起動しません。WordPress も動きません。PHP が動かないなら、WP_CACHE も要らない。
WP_CACHE は「advanced-cache.php というドロップインを読み込むか」を WordPress に伝えるスイッチです。ドロップインは PHP 側の話で、Apache が直接返す経路とは関係がありません。
流れにすると、初回だけ WordPress が普通にページを作ってキャッシュファイルに書き出し、次からは Apache が .htaccess 経由で直接返す。この経路に wp-config の書き換えは要りません。
じゃあ WP_CACHE は何のため?
Apache の直返しで拾えないリクエストのためです。
代表がクエリ文字列付きの URL。.htaccess のファストパスはクエリが空のときだけ効きます。?utm_source=... が付くと Apache は素通しできず、処理を PHP に渡します。
その PHP 経路を、WordPress 本体を読み込む前の早い段階で捕まえるのが advanced-cache.php で、これを読ませるために WP_CACHE が要ります。つまり WP_CACHE は、クエリ付き URL や Nginx など「Apache の直返しが使えない場面」を速くするための上乗せです。標準では要りません。
| 標準モード | ドロップインモード | |
|---|---|---|
| wp-config.php | 触らない | WP_CACHE を1行足す |
| 最速の経路 | Apache が .htaccess で直返し(PHP なし) |
同じ |
| クエリ付き URL | PHP で処理 | ドロップインが早い段階で処理 |
| 向いている人 | まず安全に入れたい | 速度を詰めたい |
効いているか確かめる
クエリを付けない URL(https://example.com/)と、付けた URL(https://example.com/?x=1)を両方開いて、応答速度を比べてみてください。前者は Apache の直返し、後者は PHP 経路になるので、体感で差が出ます。プラグイン側のダッシュボードで Hit / Miss を見られるなら、そこでも判別できます。
この挙動は Prime Cache というプラグインで、標準は wp-config 非改変・必要な人だけ WP_CACHE を足す、という形にして WordPress.org に公開しています。 https://wordpress.org/plugins/prime-cache/
自作でキャッシュを組む人も、まず「一番速い経路は PHP を通っていない」を確かめてから WP_CACHE が本当に要るか決めると、wp-config を触らずに済むことが多いはずです。