抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
把使用周期拉到7年,vivo Y600重新定义性价比
vivo Y600用电池、防护、流畅三件套拉长使用周期。对于不追求年年换新、想要一台可靠主力机的用户来说,它避开了频繁换机的额外开销,在涨价行情下,走出了属于耐用机型的性价比路线。
-
小米推出全新车载吸尘器 仅重460g能灵活折叠
小米推出了一款非常便携的车载吸尘器,能灵活折叠,机身仅有460g,并且支持20000Pa大吸力,适合有车内吸尘需求的朋友。
-
vivo Y600现货开售 万级大电池7年耐用长续航
万级长续航耐用手机vivo Y600已经正式开售。这款手机围绕电池、防护、长期流畅的使用体验,把手机使用周期拉长至7年,平摊下来日均使用成本很低,走出了耐用机型独有的性价比路线。
-
iPad mini8国补上线 还能同时叠加教育优惠
iPad mini 8(A20 Pro)已经开售,目前可以参加国补,并且还能叠加教育优惠,部分渠道还可配合以旧换新。
-
双涡轮风扇压满帧 荣耀WIN2解锁长效满帧体验
荣耀WIN2作为年度T0电竞夯机,给用户带来全都要的体验。不仅升级了处理器规格,还打造荣耀东风双子星涡轮散热,实现整机全域控温,实现从满电到关机的全程满帧游戏体验。
-
英特尔与SAP携手推进企业级物理AI从概念验证迈向规模化部署
英特尔宣布与SAP展开合作,通过物理AI打通企业IT系统与控制物理设备和流程的运营技术。此次合作将建立一种新模式:由业务意图直接驱动物理操作,同时将设备的运行状态、执行结果和异常情况反馈至企业系统,真正实现业务流程的闭环运作。
-
2万预算买高端折叠屏,心系天下三星W27行吗?
如果有2万预算,是买三星W27还是苹果iPhone Duo?第十九代心系天下手机有何升级?一期视频给你答案。
-
Bose Ultra开放式耳机Ⅱ评测:耳扣式无感佩戴,舒适听音之选
最近,Bose推出了Bose Ultra开放式耳机二代,不仅拥有精致小巧的耳扣式设计,凭借Bose OpenAudio开放式音频技术和Bose TrueSpatial沉浸空间音频,在保障佩戴舒适度的同时,带来清晰且富有沉浸感的听感。
-
低矮通行+热活水清洁!石头P30 Pro双11开门红上新开抢
今晚8点即将开启双11全平台开门红。如果还在纠结扫地机怎么选,不妨看看石头P30 Pro。石头P30 Pro围绕家庭清洁中的真实需求出发,做到进得去、扫得净、不迷路、少维护。
-
个护小家电零售额下滑 行业从 "参数竞争" 转向 "体验竞争"
奥维云网最新数据显示,2026年前三季度个护小家电线上零售额173.4亿元,同比下滑约3.4%。电吹风、电动牙刷、电动剃须刀三大品类销量均出现两位数下滑。

网友评论