wp-cacheで本当に速くしたい
WordPressが遅いのでwp-cacheを導入している。しかし思ったほど早くならないのはなぜか・・・。としばらく悩んでいた。
どのような作業をしたかというと、以下の通り。
(1) wp-cacheの導入
(2) 定期的にブログの主要ページにアクセスするようcronを設定(wgetで)
こうすれば、運が悪くなければ(タイミングが悪くなければ)、たいていはwgetが事前にキャッシュを作成してくれていて(もしくは検索エンジンのクローラーでもいい)、そのページを閲覧することになるわけだから、基本的には絶対高速なはず、と思っていた。しかし実際はそうではない。
wp-cacheはクライアントを識別して、クライアントごとにキャッシュを作成している。つまりAさんがトップページにアクセスしてキャッシュを作成しても、Bさんがアクセスすると、せっかくAさんが作ったキャッシュを使わず、Bさんようのキャッシュを作成するのだ。これはクッキーを使って実現されている。
具体的にはwp-cache-phase1.phpの23行目の記述。
$key = md5($_SERVER[‘SERVER_NAME’].preg_replace(‘/#.*$/’, ”, $_SERVER[‘REQUEST_URI’]).wp_cache_get_cookies_values());
md5ハッシュ値を生成している記述があるのだが、このハッシュ値がキャッシュのファイル名に使われている。つまりアクセスする相手が違うと違うキャッシュを探すのではないか、と思ったのだが・・・。
上記の記述をコメントアウトし、以下のように書き直した。
$key = md5($_SERVER[‘SERVER_NAME’].preg_replace(‘/#.*$/’, ”, $_SERVER[‘REQUEST_URI’]));
これで確かに同じキャッシュをみるようになった。さて、これで問題がないのかどうか、ということだが、それはwp_cache_get_cookies_values()関数の内容(つまりクッキーで保存されている内容)を調べないといけない。これを調べれば、なぜこのようにキャッシュを分けているのか理解できるはずだ。
しかし、まぁ、とりあえずこのままでいく。