抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
苹果iPhone手机日本市场涨价 其他地区暂不调整
苹果正式上调日本市场全系iPhone售价,涨价核心原因并非大众熟知的存储芯片成本上涨,而是日元持续贬值导致的汇率波动,因此其它地区暂不跟进涨价。
-
6月智能门锁线上市场同比承压 618拉动环比回暖
6月国内智能门锁线上全渠道销量达84.1万套,同比下滑10.3%,环比增长12.2%;线上整体销售额7.7亿元,同比下降16.0%,环比大幅回升17.6%。
-
REDMI K Pad 2新增16+256GB版本 首销期立减200元
Redmi官方宣布REDMI K Pad 2平板带来全新16+256GB版本,今天正式开售,首销期立减200元,到手价4399元。
-
阿里发布Qwen3.8预览版 首个2.4T参数模型即将开源
阿里在WAIC 2026宣布2.4万亿参数开源大模型Qwen3.8即将发布,支持百万级上下文、多模态及多智能体能力,标志着国产开源大模型竞争进一步迈向万亿参数与AI开发生态新阶段。
-
小米耳夹式耳机全新功能上线 支持双向通话翻译
小米宣布小米耳夹式耳机全新功能上线,新增英语口语陪练、双向通话翻译,预计7月下旬全量推送。
-
汇顶GT9926触控芯片方案 掀起手游操控体验新革命
汇顶科技近期推出的柔性OLED触控芯片GT9926,正以“快、准、稳”三大维度的硬核升级,重新定义移动电竞的交互下限。
-
万级大电池开始普及 OPPO首款破万电池手机来了
OPPO即将推出的OPPO A7 Pro Max,将搭载10000mAh单电芯超大电池,这也是OPPO品牌旗下首款电池容量突破万级的智能手机,该机还配备80W超级闪充,兼顾超大电池与高效补电速度。
-
小米18系列或取消Ultra版本 标准版诚意十足
据外媒消息称,小米18系列迎来重大产品策略调整,将取消Ultra影像旗舰,仅推出小米18、小米18 Pro、小米18 Pro Max三款机型。
-
欧盟对阿里AliExpress开出5.5亿欧元罚单 DSA实施以来最高
欧盟委员会宣布,对阿里巴巴旗下跨境电商平台速卖通(AliExpress)处以5.5亿欧元罚款,认定其违反《数字服务法案》(DSA)关于评估和降低非法商品传播系统性风险的相关义务。
-
AI分级国标测试结果公布 11款手机获L3级认证
在2026世界人工智能大会上,《人工智能终端智能化分级》国家标准实施后的首批测试结果正式公布。华为、moto、荣耀、vivo、OPPO、小米与STEPX Neo等品牌的9款手机,荣获L3辅助级认证。

网友评论