抛砖引玉系列-smarty缓存控制(1)
smarty提供了强大的缓存功能。但有时我们并不希望整篇文档都被缓存,而是有选择的缓存某一部分内容或某一部分内容不被缓存。例如你在页面上端使用一个带有广告条位置的模板,广告条可以包含任何HTML、图象、FLASH等混合信息. 因此这里不能使用一个静态的链接,同时我们也不希望该广告条被缓存. 这就需要在 insert 函数指定,同时需要一个函数取广告条的内容信息。smarty也提供了这种缓存控制能力。
我们可以使用{insert}使模板的一部分不被缓存
可以使用$smarty->register_function($params,&$smarty)阻止插件从缓存中输出,
还可以使用$smarty->register_block($params,&$smarty)使整篇页面中的某一块不被缓存。
下面我们真对一个简单需求,分别说明这三种控制缓存输出的方法。
需求:被缓存的文档中当前时间不被缓存,随每次刷新而变化。
1、使用insert函数使模板的一部分不被缓存
index.tpl:
index.php
function insert_get_current_time(){
return date("Y-m-d H:m:s");
}
$smarty=new smarty();
$smarty->caching = true;
if(!$smarty->is_cached()){
.......
}
$smarty->display('index.tpl');
注解:
定义一个函数,函数名格式为:inser_name(array $params, object &$smarty),
函数参数可选的,如果在模板的insert方法中需要加入其他属性,就会作为数组传递给用户定义的函数。
如:{insert name='get_current_time' local='zh'}
在get_current_time函数中我们就可以通过$params['local']来获得属性值。
如果在get_current_time函数中需要用到当前smarty对象的方法或属性,就可以通过第二个参数获得。
这时你会发现index.tpl已被缓存,但当前时间却随每次刷新在不断变化。
2、使用register_function阻止插件从缓存中输出
index.tpl:
index.php:
function smarty_function_current_time($params, &$smarty){
return date("Y-m-d H:m:s");
}
$smarty=new smarty();
$smarty->caching = true;
$smarty->register_function('current_time','smarty_function_current_time',false);
if(!$smarty->is_cached()){
.......
}
$smarty->display('index.tpl');
注解:
定义一个函数,函数名格式为:smarty_type_name($params, &$smarty)
type为function
name为用户自定义标签名称,在这里是{current_time}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
年末大折叠选购指南 华为Mate X7闭眼入首选
折叠屏选购向来考验眼光,在设计可靠性、影像实力、大屏实用性等多维度脱颖而出的华为Mate X7,无疑就是现阶段大折叠手机的首选。
-
2025全球智能手表出货量预计回暖 重回增长轨道
根据Counterpoint Research最新发布的报告显示,全球智能手表出货量预计将在2025年年底同比增长7%。
-
机械革命发布“CES 机哥新品抢先看第一弹”预热海报
2025年12月27日,机械革命正式发布“CES 机哥新品抢先看第一弹”预热海报。此次提前剧透的全品类新品矩阵,不仅覆盖台式机、迷你主机、显示器等核心硬件,更有两款重磅游戏本即将登场。
-
-
深耕腕上健康十年 华为WATCH为何“用了就回不去”
2025年12月22日,华为推出了具有里程碑意义的十周年力作——华为WATCH 十周年款。这不仅是一款全新升级的产品,更是华为WATCH系列十年健康初心的实体见证。
-
全球最快 + 全球首款,LG Display OLED新品阵容即将亮相CES
今日,LG Display正式揭晓了多款突破性OLED面板产品,其中包括“全球速度最快”的27英寸720Hz OLED面板,以及全球首款39英寸5K2K曲面OLED面板。这批兼具性能与创新的新品,将于CES 2026展会正式与全球消费者见面。
-
PC鲜辣报:雷蛇与BLACKPINK合作,Zen 6采用大容量缓存
近期科技圈新品密集亮相,AMD Zen 6处理器被曝同样采用144/288MB缓存方案;雷蛇联名BLACKPINK推出粉色潮流电竞外设;TRYX创氪星系带来可搭手办的双屏舞台式水冷散热器,覆盖DIY、电竞、硬件配件赛道。
-
一加Turbo 6主要配置曝光 完善165超高帧矩阵
据一加方面介绍,一加Turbo 6采用了骁龙8系列旗舰芯片,具有旗舰级165超高帧游戏,提供9000mAh超大冰川电池,还具备超豪华满级防水耐用。
-
屏幕尺寸更大 华为Pura X2预计2026上半年发布
据爆料消息显示,华为Pura X阔折叠手机的后续产品预计将于2026年上半年正式亮相。
-
10080mAh!荣耀Power2续航巨无霸1月5日发布
荣耀手机官方宣布,荣耀Power2将于1月5日正式推出。该机最大亮点在于搭载10080mAh巨无霸青海湖电池,直接刷新此前由荣耀WIN刚创下的手机电池容量纪录。

网友评论