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