Skip to content

isCached()

如果此模板有有效的缓存,则返回 true

描述

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,你必须将 $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(),以及 缓存 部分