●PEAR:Cache_Liteでキャッシュ管理
--
まずは、Cache_Liteパッケージがインストールしていなければ、これが必要になるので、インストールしておきます。
PEAR:Cache_Lite
使用例は、上記ウェブサイトを参照すれば一目瞭然ですが、
ここでは、AWSのトップセラーをキャッシュする例をあげておきます。
$optionsの設定値は、
Cache_Lite::Cache_Lite() -- コンストラクタ
を参照。
基本的には、キャッシュ時間(lifeTime)、キャッシュディレクトリ(cacheDir)を指定すればよい。
この例では、$reqの設定を省略しているが、実際にはトップセラー取得用のパラメータを設定しておくのは、いうまでもない。
注意点としては、あまり大きなデータは保存できないこと。
最初に試したときは、simplexml_load_fileで取得したデータを丸ごとキャッシュに保存しようと試みたのだが、あえなく玉砕。
仕方なく、整形後のデータを保存($Cache_Lite->save)すると、無事保存できた。
大きなデータをキャッシュする際は、注意が必要なのかもしれない。
また、この例のように複数のデータをキャッシュする場合は、キャッシュIDを指定して$Cache_Lite->save($data,$id)のようにすれば、各々のキャッシュとして管理可能。
これだけで、最初にリクエストしてから1時間はキャッシュから読み込むようになる。
実際にこのブログの右下に埋め込んでいるJavascript呼び出しのPHPに埋め込んでみたのだが、キャッシュなしとありでの表示時間の差は歴然。
(たまに表示しないことがあるのは、キャッシュに関係ないので、本体側の問題・・・)
こういう、トップセラーのように変動の少ないデータは、積極的にキャッシュするようにすると、体感速度の向上が見込めるので、お勧め。
使い方も簡単だし。
--
まずは、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
コメント入力は停止しています
海外からと思われるコメントスパムが横行しているため、全記事のコメント入力を停止しています。メッセージのある方は、ホームページの一番下に連絡欄がありますので、そちらからお願いします。