is_cached()
bool is_cached ( string template [, string cache_id [, string compile_id]])
テンプレートが有効なキャッシュを持つ時、trueを返します。
これは、キャッシュが有効の時のみ機能します。
これは、キャッシュが有効の時のみ機能します。
例 1. is_cached
<?php
$smarty->caching = true;
if(!$smarty->is_cached("index.tpl")) {}
$smarty->display("index.tpl");
?>
1つのテンプレートに複数のキャッシュが存在する場合は、第2パラメータにcache_idを指定します。
第3パラメータにコンパイルidを渡す事が出来ます。 このパラメータを省いた時、永続的な$compile_idが使用されます。
キャッシュidを渡さずにコンパイルidだけを渡したい場合は、キャッシュid にnullを 渡す必要があります。
例 2. 複数のキャッシュによる is_cached
<?php
$smarty->caching = true;
if(!$smarty->is_cached("index.tpl", "FrontPage")) {// ここでデータベースを呼び出し、値を割り当てる}
$smarty->display("index.tpl", "FrontPage");
?>
テクニカルノート: is_cached が true を返すと、実際にはキャッシュされた出力が読み込まれ、内部的に格納されます。続いてコールされるdisplay?() またはfetch?()はこの内部的に格納された出力を返し、キャッシュファイルを再読み込みしようとはしません。
次の例のように、is_cachedをコールしてからdisplay?をコールするまでの間に、第2のプロセスがキャッシュをクリアする時に発生するかもしれない競合条件を防ぎます。
これはclear_cache?()をコールする事を意味し、キャッシュ設定の他の変更はis_cached が true を返した後では何も影響しないだろう事を意味します。
次の例のように、is_cachedをコールしてからdisplay?をコールするまでの間に、第2のプロセスがキャッシュをクリアする時に発生するかもしれない競合条件を防ぎます。
これはclear_cache?()をコールする事を意味し、キャッシュ設定の他の変更はis_cached が true を返した後では何も影響しないだろう事を意味します。