2010年7月2日金曜日

WordpressでAPCを使ったObject Cacheを有効にする

Wordpressのプラグインの開発で、標準で提供されているキャッシュ機能を利用しようと思っても、何も設定しないとwp_cache_setしてwp_cache_getしても無意味と気づいたときのメモ。

単にキャッシュして高速化するならW3 Total CacheとかWP Super Cacheをインストールすればプラグインが自動でいろいろやってくれるので劇的に速くなると思う。

ただPHPで動的に表示するページとかktai styleとの絡みが怖かったので、明示的にプログラムでキャッシュしたい場合にだけキャッシュする。

wp-includes/cache.phpのWP_Object_Cacheクラスの使い方やキャッシュする方法はいろいろあるよ。的な説明は本家のページを読む。

前の記事でAPC(Alternative PHP Cache)はインストール済みなので、今回はWP_Object_CacheのバックエンドにAPCを使う。

ここのブログからリンクされている(APC Object・・・をクリック)apc-object-cache.phpをダウンロード。

wp-content/object-cache.phpとして配置。

これで完了。

内部的にはwp_cache_setしたときはapc_storeを呼んでいるだけ。ちなみになぜ「object-cache.php」という名前にしないといけないのかは、wp-setting.phpの290行目あたりを見れば分かる。

これでGoogle AJAX Search APIに毎回問い合わせなくて済む。

Picasaの写真を取得するプラグインを作成したときのキャッシュを使う部分は次のような感じ。

$xml = wp_cache_get('album_' . $id, WP_PICASA_CLIENT_CACHE_GROUP);
if (empty($xml)) {
	//if not cache then  connect to picasa
	$api_manager = new WPPicasaClientAPIManager();
	if (!$api_manager->auth($account, $password)) {
		return false;
	}

	//get photos
	$xml = $api_manager->get_photo_list($album['link_api']);

	//set cache
	wp_cache_set('album_' . $id, $xml, WP_PICASA_CLIENT_CACHE_GROUP, WP_PICASA_CLIENT_CACHE_TIMEOUT);
}

 

<関連記事>

【PHP】WordpressでPicasaの写真を表示(非公開のも)
【PHPチューニング】APCをインストールしてWordpressを高速化
コメントを投稿
Related Posts Plugin for WordPress, Blogger...

Blog Archives