全面剖析Smarty缓存机制二[清除缓存方法]
前段时间,写了一篇 Smaryt缓存机制的几种缓存方式 ,详细介绍了三种缓存方式:全局缓存、部分缓存、局部缓存,以及通过is_cache()判断是否存在缓存来进行缓存生成。本来这篇早该完成,由于时间关系推到今天,还好思绪没有忘掉,闲话不多说,今天主要讲解Smarty缓存机制中如何清除缓存以及缓存集合的使用技巧,下面步入正题。
一、普通清除缓存方法
总所周知,当你看了上一篇文章,会知道通过如下方法,对Smarty的缓存进行清除:
代码示例:
$smarty->clear_cache(“index.tpl”);//清除一个模板的缓存;
$smarty->clear_cache(“index.tpl”, $cache_Id);//清除一个带缓存编号的缓存;如:页面http://www.abc.com/index.asp?act=login,可以将$cache_id设为login;
$smarty->clear_all_cache();//清除所有缓存,即缓存目录下所有缓存文件;
这样就存在一个问题,比方网站有一个栏目:http://blog.unvs.cn/archives/php/ ,我只想清除这一个栏目的页面缓存而不想全部清除或一个页面缓存,这种情况经常会碰到,那么,接下来会讲到Smarty引擎中强大的缓存集合方法。
二、清除缓存集合方法
Smarty中文教程是这样描述的:可以通过建立cache_id集合做更详细的集合体,在cache_id集合里用竖线“|”来分开子集合。可以尽可能多的包含子集合。
上面解释的有点云里雾里,简单点说,就是在建立缓存中,将cache_id以一个带集合标识保存,用竖线隔开集合标识与缓存编号,而不仅仅是单一缓存编号,如:
$smarty->display(“index.tpl”, "category|".$cache_id);//前面加了一个 category| 的前缀,表明将把缓存编号为$cache_id保存在category集合里,可以理解为分组;
这里添加一个缓存文件如何命名知识点,缓存文件命名生成规则:集合名称^_Site目录_页面名称_参数_页面名称编码md5加密
如下图所示:

(category属于一个集合,index属于一个集合)
刚将了集合的生成,下面关键如何清除集合下的缓存,方法如下:
$smarty->clear_cache(null, "category");//注意模板文件参数为null,""都不可以。
以上就完成了集合缓存的生成与清除,其实,网上也有这样一种方法:给一个栏目新建一个目录,比方news栏目,缓存生成放到一个news的缓存文件夹,这点不难,然后需要清除此栏目缓存时,缓存路径指向news即可。这个方法可行,个人觉得灵活性不高。
好了,关于Smarty缓存机制原理的讲解就完成了,当然这些只是实际开发常用的应用技巧,还有更多与缓存相关的函数、块什么的,不过掌握这些,相信Smarty缓存就可以运用自如了。
全面剖析Smarty缓存机制二[清除缓存方法]的更多相关文章
- Solr4.8.0源码分析(19)之缓存机制(二)
Solr4.8.0源码分析(19)之缓存机制(二) 前文<Solr4.8.0源码分析(18)之缓存机制(一)>介绍了Solr缓存的生命周期,重点介绍了Solr缓存的warn过程.本节将更深 ...
- [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能
[.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...
- SDWebimage如何获取缓存大小以及清除缓存
sdwebimage如何获取缓存大小以及清除缓存 1.找到SDImageCache类 2.添加如下方法: - (float)checkTmpSize { float totalSize = 0; ...
- Android记录20-获取缓存大小和清除缓存功能
Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存 ...
- Hibernate 缓存机制二(转)
感谢:http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html 一.why(为什么要用Hibernate缓存?) Hibernate是一个 ...
- MyBatis缓存机制(一级缓存,二级缓存)
一,MyBatis一级缓存(本地缓存) My Batis 一级缓存存在于 SqlSession 的生命周期中,是SqlSession级别的缓存.在操作数据库时需要构造SqlSession对象,在对象中 ...
- 彻底理解浏览器的缓存机制(http缓存机制)
一.概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种: 同步s ...
- Mybatis学习(五)————— 延迟加载和缓存机制(一级二级缓存)
一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的数据的话,就不查询从表的信息.所以这就是突出了懒这个特点.真是懒啊. Mybati ...
- Mybatis(五) 延迟加载和缓存机制(一级二级缓存)
踏踏实实踏踏实实,开开心心,开心是一天不开心也是一天,路漫漫其修远兮. --WH 一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的 ...
随机推荐
- Code blocks调试教程
特别声明:本教程已转移至百度经验:https://jingyan.baidu.com/article/6b182309939a87ba58e159bf.html 一.题外话 之前一直想用Code bl ...
- 自己个儿写的循环分配txt中的内容
<?php header("Content-type:text/html;charset=utf8"); //当前日期 $now = time(); //作为程序是否执行的依 ...
- Julia - 短路求值
&& 和 || 的布尔运算符被称为短路求值 它们连接一系列布尔表达式,仅计算最少的表达式来确定整个链的布尔值 在表达式 a && b 中,只有 a 为 true 时才计 ...
- Tkinter Spinbox
Python - Tkinter Spinbox: Spinbox小部件是一个标准的Tkinter的Entry小窗口部件的变体,它可以用来选择从一个固定的值. Spinbox小部件是一个标准的Tk ...
- [Z] 将samba共享文件夹映射到linux的目录下
Linux系统下访问远程共享资源 使用mount加载共享目录: -把WinXP机器192.168.16.249上的共享目录test001映射到本地目录/wdl/下. -把Linux机器192.168. ...
- 3.Redis 数据类型
转自:http://www.runoob.com/redis/redis-tutorial.html Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集 ...
- 太白老师day6 1.代码块 2.is==id 3.小数据池
1.代码块: 一个模块一个函数一个类,一个文件都是代码块 在交互模式下, 每一行都是一个代码块 2. is == 内存地址 就是id门牌号 在内存中id是唯一,如果两个变量指向的id相同,那么他们在内 ...
- 深入理解Javascript中构造函数和原型对象的区别(转存)
Object是构造函数,而Object.prototype是构造函数的原型对象.构造函数自身的属性和方法无法被共享,而原型对象的属性和方法可以被所有实例对象所共享. 首先,我们知道,构造函数是生成对象 ...
- Boost在Linux 64 下的编译
1. 下载最新版的boost wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz 2. 解压 ...
- 前面部分(WCF全面解析1)
WCF全面解析 [同力推荐] 我经历了COM时代,一直把Don BOx的<COM本质论>奉为我的指路明灯.能把SOA机理和WCF这种特定厂商实现的技术讲得如<COM本质论>一样 ...