Smarty 图标

您可根据商标声明,使用 Smarty logo。

Smarty Template Engine Smarty Template Engine

关于赞助、广告、新闻或其他查询事宜,请通过以下方式联系我们

使用 Smarty 的网站

广告

名称

isCached() — 如果此模版有有效的缓存,则返回真

说明

bool isCached(string template,
              string cache_id,
              string compile_id);
  • 这只有在将 $caching设为 Smarty::CACHING_LIFETIME_CURRENTSmarty::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()缓存部分