What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
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()
および
キャッシュの項 も参照してください。