抛砖引玉系列-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 Neo11 至尊版&iQOO Z11S新品发布会
胜不可挡 iQOO性能双子星热血登场
-
9999元起 荣耀Robot Phone机器人手机开售
全球首款机器人手机荣耀Robot Phone将在今天10:08首销开售,这款手机采用钛合金灵巧云台,影像上与ARRI深度合作,实现电影级别的视频效果,并支持YOYO机器人拟人交互模式。
-
10000mAh泰坦电池 小米首款万级电池手机来了
据小米日本官方透露,即将在日本发售的REDMI Note 17 Pro Max会配备10000mAh电池,续航提升十分明显,该机会在8月28日开售。
-
-
鸿蒙装机量突破8000万 稳居国内第二大手机系统
据奇妙工具箱数据显示,华为HarmonyOS系统手机装机量已正式突破8000万台,再度刷新纪录、达成全新发展里程碑。
-
发挥模型能力 OPPO携手支付宝探索端侧新生态
OPPO与支付宝围绕A2A智能体协同展开深度合作,首创端侧可信互联范式,打通了从意图理解、跨应用Agent通信到支付级安全指令执行的全链路 ,让端侧多智能体实现安全、可控协同。
-
iQOO Neo11 至尊版发布3399元起 4K档2K屏旗舰
iQOO手机推出了新款手机iQOO Neo11 至尊版,该机延续了Neo11的出色配置,并在续航、性能上进行了进一步升级,在游戏体验上可比肩旗舰。
-
OPPO Find X10系列屏幕升级 支持BT.2020广色域
有爆料信息显示,OPPO下一代旗舰Find X10系列将在屏幕素质上迎来重点升级,有望支持BT.2020超广色域标准,进一步提升手机端色彩表现能力。
-
30万级满配SUV 小鹏G9L实车体验
30万价位的大五座SUV,比小鹏G9L大的没它配置高,比它配置高的价格也高不少。在这个大就是好的时代,小鹏G9L能给你的是一台科技豪华大五座SUV。
-
七夕告白新玩法 京东数码影音成双价低至520元
京东数码影音七夕推出成双价低至520元活动,覆盖户外、居家等场景,集结华为、乐奇等品牌,以科技好物助力情侣告白,搜索“数码影音777”享优惠。

网友评论