キャッシュのグループ

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

キャッシュのグループ化はテンプレートディレクトリ階層によって混乱させられるべきではなく、 テンプレートがどのような構造なのかも知り得ません。例えば、 themes/blue/index.tpl のようなテンプレート構造があり、 「blue」 テーマのキャッシュファイルを全てクリアしたい時、 テンプレートファイル構造をまねた display('themes/blue/index.tpl','themes|blue') のような キャッシュグループ構造を作成する必要があり、それならば clearCache(null,'themes|blue') によってキャッシュをクリアする事が出来ます。

例 15.9. $cache_id groups


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

$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);

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

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

// cache_id として"sports|basketball"を用いてfoo.tpl のキャッシュファイルをクリアします。
$smarty->clearCache('foo.tpl','sports|basketball');


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