抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
NVIDIA发布RTX Remix Logic,经典游戏迎来开源新世纪
在2026年国际消费电子展(CES)上,NVIDIA正式推出全新功能RTX Remix Logic,为经典游戏重制注入新生动力。该功能将于本月晚些时候通过NVIDIA应用更新上线,为经典PC游戏重制模组带来颠覆性体验。
-
科沃斯亮相CES 2026 加速迈向全场景服务机器人
科沃斯向海外市场展示了覆盖多场景的新一代机器人解决方案,包括全新地宝T90 PRO OMNI、地宝X12系列,以及擦窗机器人窗宝WINBOT、割草机器人GOAT系列的多款新品,并首次推出泳池机器人ULTRAMARINE与具身智能领域的最新研发成果。
-
英伟达G-SYNC Pulsar正式落地,首批显示器已发布
今天的CES 2026大会上G-SYNC Pulsar正式发布,这是英伟达开创性VRR技术的最新进化成果。G-SYNC Pulsar可带给玩家无卡顿的游戏体验,并通过可变频率背光频闪技术将视觉清晰度与画质还原度提升到了新的高度。
-
CES2026 雷克沙成为阿根廷国家队首个官方全球合作伙伴
雷克沙官宣成为阿根廷国家队2026首个官方全球合作伙伴。通过与承载着亿万球迷热情与信仰的冠军球队携手,雷克沙将其在专业影像、高性能存储领域的技术领导力,与体育的激情、联结力相融合,将品牌形象深刻植入全球消费者心智。
-
-
2亿像素还得等等 苹果计划2028年首次搭载
据机构消息称,苹果至少要等到2028年的iPhone 21系列才会使用2亿像素镜头。镜头将会由三星供货,打破了索尼长期以来的独家供货局面,这也符合苹果分摊供应链风险的做法。
-
苹果iPhone 17e升级巨大 灵动岛屏幕支持磁吸
据机构消息称,iPhone 17e预计会在3月发布,或许是受到了iPhone 17标准版的强势表现影响,这款手机在屏幕和磁吸功能上提升显著。
-
高颜值还能打 iQOO Z11 Turbo定档1月15日发布
iQOO手机官方宣布,iQOO Z11 Turbo将在1月15日发布,并且发布即开售。
-
Razr Fold大折叠首秀 摩托罗拉CES 2026新品连发
在CES 2026期间举行的联想技术日活动上,摩托罗拉正式展出了大折叠手机Razr Fold,还有一款专为FIFA球迷打造的Razr 60世界杯特别版手机。
-
2024至2025年,我国实现家电以旧换新1.92亿台
2024至2025年,我国实现家电以旧换新1.92亿台,其中一级能效(水效)占比达90%以上。

网友评论