Smarty 是什么?
为什么要使用它?
用例和工作流程
语法比较
模板继承
最佳实践
速成课程
您可以通过设置 $cache_id
组来进行更精细的分组。在 $cache_id
值中用竖线 |
分隔每个子组即可实现这一目的。您可以拥有任意多个子组。
您可以将缓存组视作目录层次结构。例如,缓存组 'a|b|c'
可以视为目录结构 '/a/b/c/'
。
clearCache(null,'a|b|c')
相当于删除文件 '/a/b/c/*'
。clearCache(null,'a|b')
相当于删除文件 '/a/b/*'
。
如果您指定 $compile_id
,比如 clearCache(null,'a|b','foo')
,它将被视为附加的缓存组 '/a/b/c/foo/'
。
如果您指定了模板名称,比如 clearCache('foo.tpl','a|b|c')
,那么 Smarty 将尝试删除 '/a/b/c/foo.tpl'
。
您无法删除多个缓存组下指定的一个模板名称,比如 '/a/b/*/foo.tpl'
,缓存分组只能按照从左到右的顺序进行。您需要将您的模板归为单个缓存组层次结构下,才能将它们作为一组进行清除。
缓存分组不应与您的模板目录层次结构混淆,缓存分组不会了解您的模板是如何构建的。因此,如果您有一个像 themes/blue/index.tpl
这样的模板结构,并且您希望能够清除 “blue” 主题的所有缓存文件,您需要创建一个模拟模板文件结构的缓存组结构,比如 display('themes/blue/index.tpl','themes|blue')
,然后使用 clearCache(null,'themes|blue')
来清除它们。
示例 15.9 $cache_id
组
<?php require('Smarty.class.php'); $smarty = new Smarty; $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT); // clear all caches with 'sports|basketball' as the first two cache_id groups $smarty->clearCache(null,'sports|basketball'); // clear all caches with "sports" as the first cache_id group. This would // include "sports|basketball", or "sports|(anything)|(anything)|(anything)|..." $smarty->clearCache(null,'sports'); // clear the foo.tpl cache file with "sports|basketball" as the cache_id $smarty->clearCache('foo.tpl','sports|basketball'); $smarty->display('index.tpl','sports|basketball'); ?>