永发信息网

如何清除 smarty 缓存

答案:1  悬赏:0  手机版
解决时间 2021-03-31 08:01
如何清除 smarty 缓存
最佳答案
一、使用缓存
要开启smarty的缓存,只需将caching设为true,并指定cache_dir即可.
使用cache_lefetime指定缓存生存时间,单位为秒
要对相同页面生成多个不同的缓存,在display或fetch中加入第二参数cache_id,如$smarty->display('index.tpl',$my_cache_id);此特性可用于对不同的$_GET进行不同的缓存
二、清除缓存
clear_all_cache();//清除所有缓存
clear_cache('index.tpl');//清除index.tpl的缓存
clear_cache('index.tpl',cache_id);//清除指定id的缓存
三、使用自定义缓存方式
设置cache_handler_func使用自定义的函数处理缓存
如:
$smarty->cache_handler_func = "myCache";
function myCache($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null){
}
该函数的一般是根椐$action来判断缓存当前操作:
switch($action){
case "read"://读取缓存内容
case "write"://写入缓存
case "clear"://清空
}
一般使用md5($tpl_file.$cache_id.$compile_id)作为唯一的cache_id
如果需要,可使用gzcompress和gzuncompress来压缩和解压

四、局部关闭缓存
要在某些区域使缓存失效(只对需要的缓存),有几种方法:
insert:
定义一个insert标签要使用的处理函数,函数名格式为:insert_xx(array $params, object &$smarty)其中的xx是insert的name,也就是说,如果你定义的函数为insert_abc,则模板中使用方法为{insert name='abc'}
参数通过$params传入
也可以做成insert插件,文件名命名为:insert.xx.php,函数命名为:smarty_insert_aa($params,&$smarty),xx定义同上
register_block:
定义一个block:smarty_block_name($params,$content, &$smarty){return $content;} //name表示区域名
注册block:$smarty->register_block('name', 'smarty_block_name', false); //第三参数false表示该区域不被缓存
模板写法:{name}内容{/name}
写成block插件:
1)定义一件插件函数:block.cacheless.php,放在smarty的plugins目录
block.cacheless.php的内容如下:
function smarty_block_cacheless($param, $content, &$smarty) {
return $content;
}
?>

2) 编写程序及模板
示例程序:testCacheLess.php
include('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching=true;
$smarty->cache_lifetime = 6;
$smarty->display('cache.tpl');
?>
所用的模板:cache.tpl
已经缓存的:{$smarty.now}

{cacheless}
没有缓存的:{$smarty.now}
{/cacheless}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
用什么理由约男生出来 主动暗示一下他就懂
身旺有偏印一定不好吗?有什么情况下是好的么
为什么装了realtek的驱动程序就没声音了
在太湖非法电捕虾按照国家规定算是盗窃吗
破腹产后右边肚子老是疼是怎么回事
香氯会和泳客身上汗起反应吗?
自制金色的叶子怎么做
给拜把子的备注
华硕服务器怎么样,好吗
莫名爱上你,渴望在一起这是哪首歌里面的歌词
2018年7月16日下午15.03分出生的,请问李奕辰
2.4米长的led灯条应该用多大的电源?
海运中船公司,货代,船代,码头,各起来什么
We've been looking for a cheap house but h
你好 套定额后面的单位怎么换算
推荐资讯
一个口袋中装有500粒珠子,共有5种颜色,各10
相机为什么要镜头?
qq空间6.2.1.1版本显示iphone6s的说说代码
1969年阴历12月5日出生属什么星座
越南沉香怎么样?
什么条件才可以参加国培幼师培训
奥迪C5旅行V6的2.8在当时算什么级别
韵达快运河北献县分部地址在哪,我要去那里办
单选题消化是指A.食物在消化道内氧化分解释放
家庭养花怎样自作花盆
声音沙哑,用什么泡水喝好
经常用喜欢生锈的铁锅做菜会不会对身体有害?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?