抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
REDMI M100上架1799元起 成本承压被迫6GB内存
小米商城上架了一款千元新机 ——REDMI M100,该机定价1799元起。从硬件配置来看,该机定位接近此前百元档位产品,但起售价有所上调。
-
小米9月重磅新机齐登场 阔折叠新品首发玄戒O3
小米多款重磅新品将在9月登场,手机产品方面,小米18 Pro系列新机以及小米MIX Fold5阔折叠均榜上有名。
-
曝一加16首发新一代东方屏 全局165Hz刷新率
一加下一代旗舰一加16将在屏幕高刷体验上迎来重要升级,有望首发新一代东方屏,实现全局165Hz刷新率输出,进一步拉高手机屏幕流畅体验的上限。
-
神行者8官网被曝直接使用蔚来ES8白车身图,后紧急撤换
奇瑞与捷豹路虎联合打造的新能源豪华品牌FREELANDER神行者,其首款车型神行者8官网车身安全宣传页被指照搬蔚来ES8白车身渲染图,引发热议。
-
-
AI时代,声音如何成为「声产力」?韶音OpenFit 2 AI媒体沟通会举行
作为韶音首款AI耳机,OpenFit 2 AI标志着韶音完成了从“好声音”到“好助手”的价值迭代——让开放式耳机从“能听见”走向“能听懂”,从“记录声音”走向“理解信息”。
-
-
9月9日科技春晚 苹果华为小米新品或同天发布
据爆料人士透露,小米或将于9月9日举办新品发布会,巧合的是,苹果、华为也计划在同一天推出新品,三大厂商新品同台角逐,堪称一场科技春晚。
-
OPPO发布新一代屏幕双产线技术 显示贴近真实
OPPO发布新一代屏幕双产线技术,实现了从屏幕基材定制到像素级校准的全链路显示技术升级,在BT.2020色域下带来行业领先的色彩表现,使屏幕显示效果更接近真实世界。
-
从“家电之都”到“智能科技产业高地”,电博会如何成为青岛产业的支点?
9月4日至6日,青岛国际会展中心(红岛馆),全球消费电子头部企业将如约到场,家电的智能化、AI的终端化、康养的数智化、出行的网联化,都将在这里集中呈现。

网友评论