抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
-
联想发YOGA Air 14c AI元启翻转本 配新一代铰链售8999元
联想正式发布了采用翻转设计的的YOGA Air 14c AI元启版翻转本,采用了360度翻转设计,配备英特尔酷睿Ultra 7 155H处理器。
-
-
联想发拯救者Y9000P AI元启 新增小天智能体售10999元起
联想正式发布了全新的拯救者Y9000P AI元启游戏本,在硬件配置上与原版基本一致,主要的升级就是搭载了联想小天智能体。
-
Q1全球智能扫地机器人出货455.4万台 石头同比增长18.3%
IDC公布了2024年第一季度全球智能家居设备市场报告,一季度全球智能扫地机器人出货455.4万台,同比增长11.1%。
-
Canalys:2024Q1印度平板电脑市场出货激增37%
2024年第一季度,印度个人电脑(PC) (含台式机、笔记本)和平板电脑市场,同比增长9%,总出货量达430万台。
-
科技与热爱交织,2024花粉夏令营暨花粉12周年庆圆满落幕!
6月23日,2024华为开发者大会在东莞松山湖圆满结束。HDC 2024期间,花粉俱乐部同期开展“2024花粉夏令营暨花粉12周年庆”活动。
-
汇顶科技携手联想moto打造沉浸式交互新体验
6月25日,联想发布moto razr 50系列折叠旗舰手机。汇顶科技与moto合作,为razr 50配备最新的TFA9865智能音频放大器,并全系搭载汇顶折叠屏触控及音频软件方案。TFA9865提供高达7W的输出功率和超低底噪,VoiceExperience 21软件智能优化通话质量,柔性OLED屏触控方案确保流畅操作,提升用户的音质和触控体验。
-
联想发布“一体多端”战略及多款AI PC 迪丽热巴点赞
联想于今日发布了面向AI时代布局的“一体多端”战略、天禧智能体系统的全新能力、“超级互联”应用模块,以及众多AI终端新品。其中AI PC系列产品YOGA Air 14s骁龙AI元启、YOGA Air 14c AI元启、拯救者 Y9000P AI元启正式上市。
-
网友评论