抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
nova 15系列及全场景新品发布会
北京时间12月22日14:30,nova 15系列及全场景新品发布会,我们不见不散。
-
PC鲜辣报:三星DRAM陷入供应链丑闻,联想发布卷轴屏笔记本
近期科技新闻与黑科技产品频频爆发:三星DRAM回扣调查搅动存储器市场,缺货潮持续至2027年;联想将携卷轴屏电竞本登陆CES 2026,解锁移动大屏新形态;苹果启动OLED iMac研发,终于将显示技术升级延伸至桌面设备。
-
小米17 Ultra铁定涨价 卢伟冰:肯定物超所值
在小米总裁卢伟冰的直播活动中,卢伟冰针对小米17 Ultra的定价问题进行了回答,其表示小米17 Ultra的涨价已成定局,但产品一定会物超所值。
-
12月25日19:00发布 小米17 Ultra影像旗舰定档
小米雷军宣布,小米 x 徕卡影像战略合作升级, 新一代小米夜神,小米17 Ultra同步登场,12月25日19:00发布。
-
寅谱计算发布KLEENE智控技术及新型个人工作站Hilbert
寅谱计算发布计算机主板智控技术KLEENE以及结合SSD的AI推理加速技术,同时展示了搭载主板智控技术的桌面计算机Infplane Personal Workstation:Hilbert,该计算机为寅谱计算规划的“桌面超算”系列的初代产品。寅谱计算表示在持续提升端侧计算能力的同时,公司正推进计算与存储协同的一体化终端形态研发。
-
充电宝再见 荣耀WIN系列标配10000mAh大电池
荣耀手机官方宣布,荣耀WIN系列将标配10000毫安时巨无霸青海湖大电池。在大电池支持下,连续开黑5小时,电量还剩大半管。边充边玩手机不烫手,操作更跟手。
-
三星推出首款2nm工艺手机芯片 并未集成5G基带
三星发布了旗舰智能手机芯片——Exynos 2600,这是全球首款采用2nm工艺的智能手机芯片,其采用了三星自家的2nm GAA工艺制造。
-
夸克AI眼镜G1开启预售 搭载千问AI助手低至1999
阿里千问C端事业群成立后,在 AI 硬件领域动作加速。12月22日,夸克AI眼镜正式开启两款新品预售,其中G1风尚眉框款最低到手价仅1999元,可大幅降低AI随身门槛。
-
-
摩尔线程首届MUSA开发者大会,从架构到集群的全栈技术
2025年12月20日,摩尔线程首届MUSA 开发者大会正式启幕。 大会以“自主计算创新与开发者生态共建”为核心议题,吸引2000余名产学研领域的专业人士与开发者齐聚一堂,携手见证国产GPU生态发展的关键进展与未来蓝图。

网友评论