Cache_Lite でデータをキャッシュする[Pear::Cache_Lite]

PearにCache_Liteと呼ばれるキャッシュを管理するパッケージがあります。

キャッシュとは、取得したデータなどを一時的に保存しておき、それを再利用することで 処理時間を短縮する技術です。

ここでは、Cache_Lite 1.5.2で取得したxmlデータをキャッシュしてみます。 Cache_Lite(lite.php)は、Pearのインストーラーでインストールするか、任意のディレク トリに保存しrequireすることで使用できます。

Amazon Web サービスのRESTを利用して取得したxmlデータをキャッシュします。 同じ検索であれば、キャッシュを使用することでAmazon側のサーバ負荷の軽減や 検索結果の処理スピードの向上が期待できます。

<?php
require_once 'Cache/Lite.php';

$awsUrl = 'http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService';
$awsUrl .= '&SubscriptionId=「Amazonで取得したID」';
$awsUrl .= '&Operation=ItemSearch&SearchIndex=Music&Artist=Doobie%20Brothers';
$awsUrl .= '&ResponseGroup=Medium';

$cacheOptions = array (
    'cacheDir' => './tmp/',
    'lifeTime' => '30',
);

$cacheId = $awsUrl;

$objCache = new Cache_Lite($cacheOptions);

if ($cache = $objCache->get($cacheId)) {
    $awsBuff = $cache;
}
else{
    $awsBuff = file_get_contents($awsUrl);
    $objCache->save($awsBuff,$cacheId);
}
print $awsBuff;
?>

上記例では、tmpディレクトリにキャッシュファイルが作成されます。 $cacheOptionsにキャッシュの保存先とキャッシュの有効時間を指定します。

getメンバ関数は、キャッシュIDと呼ばれるキャッシュを管理する値をもとにキャッシュが 作成されているかを確認します。キャッシュが存在する場合、そのキャッシュの内容を返します。 キャッシュが存在しない場合、falseを返します。

キャッシュを保存するには、saveメンバ関数を使用します。 キャッシュIDは、省略できるようですが気持ちよくないので明示的に指定します。

キャッシュファイルのファイル名は、「cache_ + グループ + キャッシュID」として保存されます。 グループとキャッシュIDは、デフォルトでMD5ハッシュ値が使用されます。