抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
OPPO Find N6图赏:无感折痕 颜值体现实力
OPPO Find N6保持了前代的纤薄设计感,展开后显得十分纤薄,预计厚度在4mm左右。手机闭合时的厚度与直板手机差距不大,便携性表现出色。
-
TCL华星周明忠专访:技术突围重塑移动显示体验
在MWC2026现场,我们采访了TCL华星技术企划中心长周明忠,深入解读其核心技术布局,以及为终端带来的全新体验。
-
荣耀Magic V6赤兔红首销告捷!开售20分钟全平台售罄
荣耀折叠旗舰Magic V6昨天正式发布,根据消息显示其全新配色赤兔红开售仅20分钟,全版本便在电商全平台迅速售罄,人气火爆。
-
AWE 2026:雷鸟联合高德发布首个智能眼镜本地生活应用
雷鸟创新联合数字地图服务领导者高德地图,发布雷鸟智慧生活。这是自2025年5月双方建立战略合作以来的又一标志性成果。
-
联发科Genio智能物联网平台 为机器人带来先进AI计算能力
3月11日,在德国纽伦堡举办的国际嵌入式展(Embedded World)上,MediaTek正式发布一系列赋能各类物联网产品应用的全新MediaTek Genio®️平台。
-
英伟达DLSS 4.5六倍帧生成3月31日上线,RTX 50系专属
PChome3月11日消息,英伟达DLSS 4.5的六倍多帧生成技术将于3月31日通过NVIDIA App Beta版正式开放,专为RTX 50系显卡用户打造,通过动态帧生成倍率调整,可实现最高6倍帧率提升,破解高刷高画质性能瓶颈。
-
OPPO Find N6超前开箱:折痕真的不见了!
OPPO Find N6超前开箱。折叠屏最大的痛点:折痕问题,终于被搞定了!
-
中国联通eSIM机型再扩容 三星S26系列联通首销
中国联通eSIM尝鲜季再添新品,中国联通携手三星在北京西单营业厅举办了三星Galaxy S26系列的首销仪式。
-
双屏大屏全都有:华硕灵耀2026系列让商务办公更从容
在移动办公越来越常态化的今天,真正值得投入的,其实不是单一参数,而是使用体验本身。三台2026款华硕灵耀笔记本都在围绕真实场景优化——多任务处理、商务展示、差旅携带、视觉品质,以及AI带来的细节升级。
-
品质抗造续航可靠 耐用双在线还看荣耀Magic V6
能把硬件耐用性和续航耐用性双双兼顾到的,荣耀Magic V6绝对是首选。这款机型彻底打破折叠屏“娇贵、不耐用”的刻板印象,而且创造了大折叠手机新机电池容量纪录。

网友评论