抛砖引玉系列-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}
两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。
提示:试试键盘 “← →” 可以实现快速翻页
每日精选
-
nova 16 系列及全场景新品发布会
北京时间 6 月 1 日 14:30,nova 16 系列及全场景新品发布会,我们不见不散。
-
PC鲜辣报:海盗船首用长鑫内存颗粒,英伟达处理器入局PC
PChome6月1日消息,国产长鑫DRAM颗粒成为首个采用国产存储芯片的海外大牌厂商;AMD专为中国市场打造的RX 9070 GRE特供显卡官宣全球发售;英伟达携手微软高调预热全新N1X ARM架构处理器。
-
华为感谢美国制裁 促进中国半导体产业链成长
华为技术有限公司副董事长、轮值董事长徐直军近日在接受媒体采访时表示,如果不是美国制裁逼我们国家、我们公司、我们产业界,不可能要干一件这样的事。
-
断层领先 华为Mate 80标准版激活量已近400万
华为Mate 80标准版国内单品激活量已逼近 400 万大关,成为同期发布的所有国产旗舰手机中单品激活量最高的机型,实现了对其他竞品的断层式领先。
-
双尺寸全能影像旗舰 小米17T系列国内6月8日发布
小米雷军今日发文宣称,小米 17T系列将于6月8日正式发布。该系列包含小米17T Pro和小米17T两款机型,定位 "双尺寸全能影像旗舰"。
-
肖战同款4K实况神机 荣耀600元气版开售在即
荣耀600元气版将于6月3日上午10:05正式开售。作为荣耀全球代言人肖战同款机型,这款"4K 实况神机"凭借超高性价比和全面升级的配置,自5月25日发布以来已吸引超过百万用户预约。
-
七彩虹灵创K16高端AI移动工作站上架,定价23999元起
PChome 6月1日消息,七彩虹灵创K16高端AI移动工作站正式登陆京东开启预售,首发定价239999元起,将于6月5日迎来正式首销。新品主打本地化AI算力与专业创意创作场景,面向高端专业用户打造旗舰级性能体验。
-
机械革命极光X潮玩版游戏本发售,国补后仅6987元!
PChome 6月1日消息,机械革命极光X潮玩版游戏本现已正式上架开售,标配酷睿7 245HX处理器、16GB内存、1TB SSD以及RTX5060独立显卡,叠加国家补贴、首发优惠后,实际到手价低至7224.15元,性价比十分突出。
-
毕业季记录神器 vivo S60让每一刻青春鲜活如初
一部能完美捕捉氛围感的手机,就是送给自己最好的毕业礼物。在众多选择中,vivo S60绝对是那个能让你眼前一亮的答案。
-
与MTK携手打造 英伟达推出RTX Spark超级芯片
NVIDIA正式推出了RTX Spark超级芯片,这颗芯片专为个人智能体(龙虾)Windows 11 PC平台打造,是英伟达与MediaTek联合打造的,MTK为该芯片提供了关键赋能。

网友评论