抛砖引玉系列-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 Fold电池保守
苹果、三星的大屏折叠新机在电池规格上整体偏保守,两款机型的电池容量均维持在4800mAh左右,与现阶段国产大折叠普遍搭载的大容量电池形成了明显差距。
-
西班牙队夺冠同款 荣耀Robot Phone亮相世界杯
在世界杯决赛过后,西班牙队球员纷纷拿出手机记录夺冠珍贵瞬间,而球员手中一款造型独特的手机迅速出圈吸睛,这款手机正是荣耀即将发布的Robot Phone。
-
疑似小米MIX Fold5真机曝光 澎湃OS 4系统
疑似小米 MIX Fold 5的真机实拍图正式曝光。虽然画面关键细节被模糊处理,但新机全新的宽幅外屏设计清晰可辨,机身展开后屏幕比例更接近平板,视野更加开阔。
-
苹果iPhone手机日本市场涨价 其他地区暂不调整
苹果正式上调日本市场全系iPhone售价,涨价核心原因并非大众熟知的存储芯片成本上涨,而是日元持续贬值导致的汇率波动,因此其它地区暂不跟进涨价。
-
6月智能门锁线上市场同比承压 618拉动环比回暖
6月国内智能门锁线上全渠道销量达84.1万套,同比下滑10.3%,环比增长12.2%;线上整体销售额7.7亿元,同比下降16.0%,环比大幅回升17.6%。
-
PC鲜辣报:AI PC进入体验竞争时代,DIY市场迎暑期旺季
AI PC持续扩容、CPU市场价格竞争加剧、SSD价格高位运行、DIY装机迎来暑期旺季,共同构成过去一周PC硬件行业的主要看点。
-
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,正以“快、准、稳”三大维度的硬核升级,重新定义移动电竞的交互下限。

网友评论