WordPressのキャッシュプラグイン「Quick Chache」で困るのは、404ページもキャッシュしてしまい、次回のアクセスから200応答してしまうことである。
これを回避するのは非常に簡単で、テーマの404.phpの先頭に、
<?php define('DONOTCACHEPAGE', TRUE); ?>
を追加しておけばOKだ。
DONOTCACHEPAGEはほかのプラグインでも使われることのある定数だが、Quick Cacheでもこれによってキャッシュするかいなかを判断している(readme.txtやソースコード参照)。これによって404.phpが呼ばれる条件のときにQuick Cacheがキャッシュをしなくなる。
function.phpなどではなく、404.phpで設定するのには訳がある。いったんはWordPressのリダイレクト機構でページテンプレートが読み込まれていて、何かしらの条件で404を返したい場合にも404.phpを呼び出しておけば対応できるからだ。ありがちな例だと以下のようなものだ。
} else { // 条件が合わず404にしたいとき header("HTTP/1.1 404 Not Found"); include(TEMPLATEPATH . '/404.php'); exit; }
Quick Cacheはシンプルで使いやすく多くのサイトで利用されていると思うが、最新版では無料版(LITE VERSION)と有料版に分かれてしまい以前ほどの魅力はなくなってしまった。とはいえ、WordPressの高速化では手軽なプラグインであるため、凝ったことをしなければQuick Cacheの無料版でも十分だ。