- サイトデザイン工事中です。ご意見をお寄せください。
- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
関数リファレンス/WP Cache
目次 |
WordPress Object Cacheの役割
WP_Object_Cacheは複雑なデータベースクエリなどの生成に負荷のかかるデータをキャッシュするためのWordPressクラスです。オブジェクトキャッシュはwp-includes/cache.phpに定義されています。
プラグインを作るときにはこのコードを直接使わず、以下に挙げるwp_cache関数を使ってください。
デフォルトでは、オブジェクトキャッシュは永続的なものではありません。これはつまり、データはメモリ上にのみ存在し、セッションの間を通してしか存在しないことを意味します。永続的なキャッシュを利用するプラグインを使わずに、キャッシュされたデータがすべてのページをまたいで永続的に保存されることはありません。詳細はこの下の#Persistent_Cache_Pluginsセクションを参照してください。
wp_cache関数
ほとんどの関数は次の値を取ります:
- $key: 値を示すキー
- $data: 保存したい値
- $group: (オプション) キャッシュ内でデータをグルーピングする方法。複数のグループで同じキーを使うことができます。
wp_cache_add( $key, $data, $group )
この関数はキャッシュキーがまだ存在しない場合にキャッシュを生成します。もし存在する場合、データはキャッシュに追加されず、関数はfalseを返します。
wp_cache_set( $key, $data, $group )
キャッシュにデータを追加します。キャッシュが存在する場合は上書きされ、存在しない場合は生成されます。
wp_cache_get( $key, $group )
キャッシュされたオブジェクトを取得します。キャッシュキーが存在しない場合はfalseを返します。
wp_cache_delete( $key, $group )
与えられたキーのキャッシュを削除します。
wp_cache_replace( $key, $data, $group )
与えられたキーのキャッシュが存在すれば置換し、なければfalseを返します。これはwp_cache_set()と似ていますが、すでに存在しない場合は何もしない点が異なります。
wp_cache_flush()
すべてのキャッシュデータを削除します。
例
オブジェクトキャッシュの一番よくある例としては、負荷の高いSQLクエリの実行結果をキャッシュし、ページ読み込み内で何度も実行させないというものです。次の例では、$query変数を負荷の高いSQLクエリだと考えてください。
$result = wp_cache_get( 'my_result' );
if ( false == $result ) {
$result = $wpdb->get_results( $query );
wp_cache_set( 'my_result', $result );
}
// $resultを処理する
永続的キャッシュ
WordPress2.5以前では、wp-config.phpにdefine('WP_CACHE', true)を書いた場合のみ、wp_cache関数を使って保存されたデータは永続的に保存されました。
今ではそのようなことはなく、以下のような永続的キャッシュプラグインを使わない限り、define('WP_CACHE', true)は意味がありません。
永続的なキャッシュプラグイン
- WP File Cache の実装では、オブジェクトキャッシュをデータベースの読み出しからディスク/ファイルシステムに移行しています。
- File-Based Caching for WordPress はWordPress2.1 - 2.3に見られたファイルベースのオブジェクトキャッシュ機構を再実装しています。
- Memcached Object Cache はWordPressに対して永続的オブジェクトキャッシュのバックエンドを提供します。memcachedサーバーとPECLのmemcached拡張が必要です。
関連項目
Transients_APIはデータに名前をつけて有効期限を設定することで、永続的かつ時限的なキャッシングを提供します。
追加情報
- フランク・ビュルトゲのプラグインWP Cache Inspectはオブジェクトキャッシュを分析するのに役立ちます。