is_cached() — テンプレートが有効なキャッシュを持つ場合にtrueを返します。
bool is_cached(string template,
string cache_id,
string compile_id);
1つのテンプレートに
複数のキャッシュ
が存在する場合は、第2パラメータに
$cache_id を渡すことができます。
第3パラメータに
$compile id
を渡すを渡す事が出来ます。このパラメータを省いた時は、もし永続的な
$compile_id が設定されていればそれを使用します。
$cache_id は渡さずに
$compile_id だけを渡したい場合は、
$cache_id に NULL を指定します。
is_cached() が TRUE を返すと、
実際にはキャッシュされた出力が読み込まれ、内部に格納されます。続いてコールされる
display() または
fetch()
はこの内部に格納された出力を返し、キャッシュファイルを再読み込みしようとはしません。
これにより、上の例における is_cached() のコールから
display() のコールまでの間に
別のプロセスがキャッシュをクリアしてしまうといった競合を防ぐことができます。これは、
is_cached() が TRUE を返した後は
clear_cache()
やその他キャッシュ設定の変更が何の影響も及ぼさないということも意味します。
Example 13.19. is_cached()
<?php
$smarty->caching = true;
if(!$smarty->is_cached('index.tpl')) {
// ここでデータベースを呼び出し、値を割り当てます
}
$smarty->display('index.tpl');
?>
Example 13.20. 複数のキャッシュを使用したテンプレートにおける is_cached()
<?php
$smarty->caching = true;
if(!$smarty->is_cached('index.tpl', 'FrontPage')) {
// ここでデータベースを呼び出し、値を割り当てます
}
$smarty->display('index.tpl', 'FrontPage');
?>
clear_cache()、
clear_all_cache()
および
キャッシュの項 も参照してください。