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/*'
。如果你按照
clearCache(null,'a|b','foo')
的方式来设置$compile_id
, 那么它将自动附带一个$compile_id
的缓存组。如果你按照
clearCache('foo.tpl','a|b|c')
的方式来设置模板名称, 然后Smarty将试图删除'/a/b/c/foo.tpl'
。因为缓存组是“从左到右”顺序删除缓存的,所以你不能单独删除某个缓存如
'/a/b/*/foo.tpl'
。 你可以另外再设置一个缓存组来达到此目的。
不能混淆缓存组和模板目录结构,缓存组与你的模板层次结构是无关的。 比如说,你有一个模板文件themes/blue/index.tpl
, 然后你想删除全部带“blue”的主题(theme), 这样你可以参考模板目录结构来创建一个缓存组,如display('themes/blue/index.tpl','themes|blue')
, 之后你可以通过clearCache(null,'themes|blue')
来删除它们。
Example 15.9. $cache_id 组
<?php require('Smarty.class.php'); $smarty = new Smarty; $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT); // 删除全部'sports|basketball'的缓存 $smarty->clearCache(null,'sports|basketball'); // 删除全部"sports"下的缓存,这里包括了 // "sports|basketball", 或者 "sports|(anything)|(anything)|(anything)|..."等等 $smarty->clearCache(null,'sports'); // 删除"sports|basketball"下的foo.tpl缓存文件 $smarty->clearCache('foo.tpl','sports|basketball'); $smarty->display('index.tpl','sports|basketball'); ?>