WordPress のオブジェクトキャッシュ
たしか 2.0 からだったと思うのですが、WordPress には内蔵のキャッシュ機能が実装されています。 この機能を使うと、サーバの環境によっては表示速度などが速くなる可能性があります。 wp-cache というプラグインもあって混同しやすいですが、こちらはコア実装のキャッシュです。 ここでは区別するたびに、オブジェクトキャッシュと呼んでみます。
Function Reference/WP Cache ≪ WordPress Codex
WP_Object_Cache is WordPress’ class for caching data which may be computationally intensive to regenerate dynamically on every page load. It’s defined in wp-includes/cache.php.
Do not use the class directly in your code when writing plugins, but use the wp_cache functions listed here.
Caching is not enabled by default. Add define(‘ENABLE_CACHE’, true); to your wp-config.php file.
使うにはいくつか条件があって、
- PHP の SAFE MODE がはいっていないこと。
- wp-content/cache ディレクトリに書き込み権限がついていること。
- wp-config.php に上記 ENABE_CACHE 定数の定義があること。
- wp-setting.php 等に DISABLE_CAHE の記述がないこと。
という条件で利用することができます。 日本のレンタルサーバでは、ロリポップ、さくら等が大丈夫そう。 使っている方の多い XREA は SAFE MODO のため残念ながら使えません。(といっても XREA はもともと速いので問題ではないと思いますが)
基本的に、 (共有レンタルサーバでは)MySQL への SQL 発行より、別でファイル I/O して PHP のメモリにキャッシュしたほうが高速であろう、という思想の元作られている機能なので、MySQL が遅くない場合は、逆にオブジェクトキャッシュするほうがパフォーマンスが悪くなる可能性もあります。
WordPress MUのキャッシュ機能でパフォーマンス向上 – WordPress MU & Smarty Factory
WordPress MUには、パフォーマンスを向上させるためにキャッシュ機能というのがある。
この機能を有効にすると、wp-content/cacheディレクトリ内に、中間コードらしきファイルが生成され、「微妙に」パフォーマンスが向上する。
先に申し上げておくと、Apacheベンチの結果では、効果はイマイチ。
うちのサーバーでは、MySQLのクエリーキャッシュを有効にしているので、そちらのほうが遥かに大きな効果が得られた。
WordPress MU & Smarty さんでも指摘があるとおり、MySQL のクエリーキャッシュのほうが相当パフォーマンスがでると思います。
とはいえ、いろんなユーザがはいっている一般的な共有サーバでは MySQL のクエリーキャッシュがどの程度効くのか未知数の ところもありますので、ものは試しでこのオブジェクトキャッシュをいれてみても良いかもしれません。
ちなみにうちは、 30 クエリーほどだったのが、オブジェクトキャッシュをいれてからは
16 queries. 0.346 seconds.
半分くらいになっています。
trac をみていると、ENABLE_CACHE しているときだけ再現する不具合もあり、キャッシュの性格上諸刃の剣の部分もありますが、ちょっとでも速くしてみたい方はお試しください。 🙂
From: links for 2007-08-23 at orioa - 2007/8/23 Thursday (Pingback)
[…] hiromasa.zone :o) ≫ WordPress のオブジェクトキャッシュ (tags: wordpress) […]
From: WordPress 3.0 プラグイン管理画面の「追加機能」 : dogmap.jp - 2010/6/3 Thursday (Pingback)
[…] という記述を追加する必要があります。 このファイルが存在すると、オブジェクトキャッシュ機能が有効になります。 例えば memcached […]