キャッシュのグループ

cache_idのグループを設定する事で、より複雑なグループにする事が出来ます。これはcache_idの値の中の"|"によって各サブグループに分けられる事で成されます。サブグループはいくらでも持つ事が出来ます。

例 13-9. cache_id グループ

<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

// はじめの2つのcache_idグループが"sports|basketball"のキャッシュを全てクリアします。
$smarty->clear_cache(null,"sports|basketball");

// はじめのcache_idグループが"sports"のキャッシュを全てクリアします。
// これは"sports|basketball"又は"sports|(anything)|(anything)|(anything)|..."を用いてインクルードされたものでしょう。
$smarty->clear_cache(null,"sports");

$smarty->display('index.tpl',"sports|basketball");
?>

テクニカルノート: キャッシュのグループ化には、cache_idの一部としてテンプレートのパスを用いません。例えば、display('themes/blue/index.tpl')がある時、"themes/blue"ディレクトリ下のキャッシュのみを全てクリアするといった事は出来ません。もしそれを行いたい場合は、display('themes/blue/index.tpl','themes|blue'); のようにcache_idの中にそれらをグループ分けする必要があります。そうすれば、clear_cache(null,'themes|blue'); によってblueテーマのキャッシュをクリアする事が出来ます。