抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
iQOO Z11 Turbo沧浪浮光:金属材质好看能打
iQOO Z11 Turbo在设计上脱胎换骨,不仅在机身材质上进行了升级,并打造了6.59英寸黄金中屏比例,大R角手感持机十分舒适。
-
华为Mate 80 Pro Max获得PChome2025卓越旗舰手机奖项
PChome年度卓越产品评选已经落下帷幕,2025年度共有数十款产品脱颖而出,获得年度奖项。在本次评选活动中,华为Mate 80 Pro Max获得PChome2025卓越旗舰手机奖项。
-
PC鲜辣报:三星铁腕推进DDR4停产,储存大厂开启挑客模式
近期存储与PC行业可谓看点密集,内存行业依旧是老话题。海备思将情怀融入存储硬件;三星凭借行业主导地位,一边推进DDR4停产变动存储价格格局,一边内存三巨头开启“挑客”模式,行业分化态势愈发明显。
-
国行版没有灰度测试 苹果建议不要强行开启AI
近日,有博主发文称其国行版iPhone 16 Plus收到“Apple智能与Siri”相关测试提示,该消息迅速引发网络热议,不少网友猜测这是苹果针对国行版AI功能开展的灰度测试。
-
等同防窥膜 三星S26 Ultra新增隐私显示
根据One UI 8.5的代码显示,三星在为Galaxy S26 Ultra开发一项名为“隐私显示”的新功能。该功能类似软件形式的防窥膜,当以一定角度观看屏幕时,屏幕亮度就会自动调暗或隐藏屏幕。
-
两大两小 OPPO Find X9 Ultra传感器规格曝光
OPPO Find X9 Ultra预计将在2026年3月发布,这款手机将继续采用双潜望长焦的后置四摄。目前已经有消息人士曝光了四颗镜头的传感器信息。
-
卢伟冰拍板年度好选 REDMI Turbo 5 Max本月见
据REDMI红米手机官方透露,将在本月推出新机REDMI Turbo 5 Max,这款手机将在性能和续航上进行突破,并拥有旗舰级别的质感与体验,定价在2.5K档。
-
华硕将在CES推出DARK HERO主板以及白色版EXTREME主板
华硕确认将在CES 2026推出ROG CROSSHAIR X870E DARK HERO主板以及白色版的EXTREME型号,两款均配备专属水冷触点设计。并且将于2026年1月6日CES 2026发布会上正式亮相。
-
CES 2026:石头科技蓄势待发,将携手皇家马德里惊艳亮相
CES 2026将于2026年1月5日至9日在美国拉斯维加斯举行,至于石头到底能带来哪些首发黑科技新品,在具身智能落地应用上又将带来怎样的突破,和皇家马德里奖打造的创新展示区有什么惊喜,就让我们共同关注CES2026。
-
小米17 Pro Max获得PChome2025卓越交互体验手机奖项
PChome年度卓越产品评选已经落下帷幕,2025年度共有数十款产品脱颖而出,获得年度奖项。在本次评选活动中,小米17 Pro Max获得PChome2025卓越交互体验手机奖项。

网友评论