何为 Smarty?
为何使用 Smarty?
用例和工作流程
语法比较
模版继承
最佳实践
速成课程
isCached() — 如果此模版有有效的缓存,则返回真
bool isCached(string template,
string cache_id,
string compile_id);这只有在将 $caching设为 Smarty::CACHING_LIFETIME_CURRENT 或 Smarty::CACHING_LIFETIME_SAVED 中的一个(以启用缓存)才有效。有关详情,请参阅缓存部分。
您还可以将 $cache_id 作为一个可选的第二个参数传递,以防您希望给定的模板有多个缓存。
您可以提供 $compile id,作为可选的第三个参数。如果您省略该参数,将使用持久的 $compile_id(如果设置了)。
如果您不希望传递一个 $cache_id,但想传递一个 $compile_id,则必须将 NULL 传递为 $cache_id。
如果 isCached() 返回 TRUE,它实际上加载缓存输出并内部存储它。对 display() 或 fetch() 的任何后续调用将返回此内部存储的输出,并且不会尝试重新加载缓存文件。这防止了在调用 isCached() 和上述示例中的 display() 之间,第二个进程清除缓存时可能发生的竞争条件。这也意味着对 clearCache() 的调用和缓存设置的其他更改在 isCached() 返回 TRUE 之后可能无效。
示例 14.32. isCached()
<?php
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
if(!$smarty->isCached('index.tpl')) {
// do database calls, assign vars here
}
$smarty->display('index.tpl');
?>
示例 14.33. isCached() 与多缓存模板
<?php
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
if(!$smarty->isCached('index.tpl', 'FrontPage')) {
// do database calls, assign vars here
}
$smarty->display('index.tpl', 'FrontPage');
?>
另请参见 clearCache()、clearAllCache() 和 缓存部分。