何为 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()
和 缓存部分。