PHP

Smarty 缓存清除缓存方法

HUA
HUA
2018-05-29 / 0 评论 / 1,762 阅读 / 正在检测是否收录...

smarty有全局缓存、部分缓存、局部缓存,以及通过is_cache()判断是否存在缓存来进行缓存生成。本来这篇早该完成,由于时间关系推到今天,还好思绪没有忘掉,闲话不多说,今天主要讲解Smarty缓存机制中如何清除缓存以及缓存集合的使用技巧,下面步入正题。
一、普通清除缓存方法总所周知,当你看了上一篇文章,会知道通过如下方法,对Smarty的缓存进行清除:
代码示例:
$smarty->clear_cache(“index.tpl”);
//清除一个模板的缓存;

$smarty->clear_cache(“index.tpl”, $cache_Id);
//清除一个带缓存编号的缓存;如:页面https://www.ascwh.com/,可以将$cache_id设为index;

$smarty->clear_all_cache();
//清除所有缓存,即缓存目录下所有缓存文件; 这样就存在一个问题,比方网站有一个栏目:https://www.ascwh.com/archives/ ,我只想清除这一个栏目的页面缓存而不想全部清除或一个页面缓存,这种情况经常会碰到,那么,接下来会讲到Smarty引擎中强大的缓存集合方法。

二、清除缓存集合方法Smarty中文教程是这样描述的:

可以通过建立cache_id集合做更详细的集合体,在cache_id集合里用竖线“|”来分开子集合。可以尽可能多的包含子集合。 上面解释的有点云里雾里,简单点说,就是在建立缓存中,将cache_id以一个带集合标识保存,用竖线隔开集合标识与缓存编号,而不仅仅是单一缓存编号,如:
$smarty->display(“index.tpl”, "category|".$cache_id);
//前面加了一个 category| 的前缀,表明将把缓存编号为$cache_id保存在category集合里,可以理解为分组; 这里添加一个缓存文件如何命名知识点,缓存文件命名生成规则:
集合名称^_Site目录_页面名称_参数_页面名称编码md5加密如下图所示:

php-smarty-clear-cached-group-pic-1(category属于一个集合,index属于一个集合) 刚将了集合的生成,下面关键如何清除集合下的缓存,方法如下:

$smarty->clear_cache(null, "category");

//注意模板文件参数为null,""都不可以。 以上就完成了集合缓存的生成与清除,

其实,网上也有这样一种方法:给一个栏目新建一个目录,比方news栏目,缓存生成放到一个news的缓存文件夹,这点不难,然后需要清除此栏目缓存时,缓存路径指向news即可。这个方法可行,个人觉得灵活性不高。

好了,关于Smarty缓存机制原理的讲解就完成了,当然这些只是实际开发常用的应用技巧,还有更多与缓存相关的函数、块什么的,不过掌握这些,相信Smarty缓存就可以运用自如了。

0

评论 (0)

取消