Smarty成员方法:isCached()
Name
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()
的时候重复两次读取缓存内容,导致系统开销。 这也意味着,在isCached()
返回TRUE
后,调用的 clearCache()
或者其他缓存设置,将不会影响缓存的内容输出。
Example 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'); ?>
Example 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()
, 和 缓存.