<< JavascriptとPHPの連携 | main | クエリーの解析 >>

2007.02.26 Monday

PEAR:Cache_Liteでキャッシュ管理

AWSを本格的に使うと、キャッシュ管理が必要になってきます。
PEARのCache_Liteというパッケージを使用すると、
簡単にキャッシュ管理が実現できるので、メモを残しておきます。
--

まずは、Cache_Liteパッケージがインストールしていなければ、これが必要になるので、インストールしておきます。
PEAR:Cache_Lite

使用例は、上記ウェブサイトを参照すれば一目瞭然ですが、
ここでは、AWSのトップセラーをキャッシュする例をあげておきます。
require_once('Cache/Lite.php');

$cache_dir = '/tmp/';
$id = 'unique_id';

$options = array(
'cacheDir' => $cache_dir,
'caching' => true,
'lifeTime' => 3600, // 1hours
);
$Cache_Lite = new Cache_Lite($options);

$arraySearchIndex = array('Books','Music');
$arrayBrowseNode = array('465610','562032');
$an = array_rand($arraySearchIndex);
$SearchIndex = $arraySearchIndex[$an];
$BrowseNode = $arrayBrowseNode[$an];
$id = 'cache_aws_' . $SearchIndex;

$req = "変化しないリクエスト固定データ";
$req .= "&SearchIndex=$SearchIndex&BrowseNode=$BrowseNode";

if ($data = $Cache_Lite->get($id)) {
echo "hit cache<br><br>";
} else { // No valid cache found (you have to make the page)
echo "not cache<br><br>";
$xml = simplexml_load_file($req_tmp);
$nitems = count($xml->Items->Item);
$data = "";
for($n=0;$n<$nitems;$n++){
$title = $xml->Items->Item[$n]->ItemAttributes->Title;
$data .= "$title<br>";
}
$Cache_Lite->save($data,$id);
}

echo "$data";


$optionsの設定値は、
Cache_Lite::Cache_Lite() -- コンストラクタ
を参照。
基本的には、キャッシュ時間(lifeTime)、キャッシュディレクトリ(cacheDir)を指定すればよい。
この例では、$reqの設定を省略しているが、実際にはトップセラー取得用のパラメータを設定しておくのは、いうまでもない。

注意点としては、あまり大きなデータは保存できないこと。
最初に試したときは、simplexml_load_fileで取得したデータを丸ごとキャッシュに保存しようと試みたのだが、あえなく玉砕。
仕方なく、整形後のデータを保存($Cache_Lite->save)すると、無事保存できた。
大きなデータをキャッシュする際は、注意が必要なのかもしれない。

また、この例のように複数のデータをキャッシュする場合は、キャッシュIDを指定して$Cache_Lite->save($data,$id)のようにすれば、各々のキャッシュとして管理可能。

これだけで、最初にリクエストしてから1時間はキャッシュから読み込むようになる。

実際にこのブログの右下に埋め込んでいるJavascript呼び出しのPHPに埋め込んでみたのだが、キャッシュなしとありでの表示時間の差は歴然。
(たまに表示しないことがあるのは、キャッシュに関係ないので、本体側の問題・・・)

こういう、トップセラーのように変動の少ないデータは、積極的にキャッシュするようにすると、体感速度の向上が見込めるので、お勧め。
使い方も簡単だし。

--

テクノラティお気に入りに追加する

Comments

コメント入力は停止しています

海外からと思われるコメントスパムが横行しているため、全記事のコメント入力を停止しています。メッセージのある方は、ホームページの一番下に連絡欄がありますので、そちらからお願いします。

Trackback URL

トラックバックする場合は、
トラックバック元の記事にこのエントリへのリンクを記載してください
このエントリのタイトル「PEAR:Cache_Liteでキャッシュ管理」
このエントリのリンク「http://kommy.s254.xrea.com/blog/log/eid18.html」