isCached()
如果此模板有有效的缓存,则返回 true
描述
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,你必须将$cache_id传递为 NULL。
注意
如果
isCached()返回 TRUE,实际上它会加载缓存的输出并在内部存储。任何后续对display()或fetch()的调用将返回这个内部存储的输出,并且不会尝试重新加载缓存文件。这防止了在调用isCached()和上述示例中的display()之间,第二个进程清除缓存时可能出现的竞态条件。这也意味着在isCached()返回 TRUE 后,对clearCache()和其他缓存设置的更改可能不会产生任何效果。
<?php
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
if(!$smarty->isCached('index.tpl')) {
// 在这里进行数据库调用,分配变量
}
$smarty->display('index.tpl');
?>
<?php
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
if(!$smarty->isCached('index.tpl', 'FrontPage')) {
// 在这里进行数据库调用,分配变量
}
$smarty->display('index.tpl', 'FrontPage');
?>
参见 clearCache(),
clearAllCache(),以及 缓存
部分。