• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

クラスリファレンス/WP Object Cache

提供: WordPress Codex 日本語版
移動先: 案内検索

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.phpdefine('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はオブジェクトキャッシュを分析するのに役立ちます。
クラスリファレンス関数リファレンスの各インデックスも参照してください。


最新英語版: WordPress Codex » Class_Reference/WP_Object_Cache最新版との差分