smarty高级应用之缓存操作技巧分析

上传人:bin****86 文档编号:59370895 上传时间:2018-11-06 格式:DOCX 页数:7 大小:17.52KB
返回 下载 相关 举报
smarty高级应用之缓存操作技巧分析_第1页
第1页 / 共7页
smarty高级应用之缓存操作技巧分析_第2页
第2页 / 共7页
smarty高级应用之缓存操作技巧分析_第3页
第3页 / 共7页
smarty高级应用之缓存操作技巧分析_第4页
第4页 / 共7页
smarty高级应用之缓存操作技巧分析_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《smarty高级应用之缓存操作技巧分析》由会员分享,可在线阅读,更多相关《smarty高级应用之缓存操作技巧分析(7页珍藏版)》请在金锄头文库上搜索。

1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解Smarty高级应用之缓存操作技巧分析本文实例讲述了Smarty高级应用之缓存操作技巧。分享给大家供大家参考,具体如下:smarty缓存控制smarty提供了强大的缓存功能。但有时我们并不希望整篇文档都被缓存,而是有选择的缓存某一部分内容或某一部分内容不被缓存。例如你在页面上端使用一个带有广告条位置的模板,广告条可以包含任何HTML、图象、FLASH等混合信息. 因此这里不能使用一个静态的链接,同时我们也不希望该广告条被缓存. 这就需要在 insert 函

2、数指定,同时需要一个函数取广告条的内容信息。smarty也提供了这种缓存控制能力。我们可以使用insert使模板的一部分不被缓存可以使用$smarty-register_function($params,&$smarty)阻止插件从缓存中输出,还可以使用$smarty-register_block($params,&$smarty)使整篇页面中的某一块不被缓存。下面我们真对一个简单需求,分别说明这三种控制缓存输出的方法。需求:被缓存的文档中当前时间不被缓存,随每次刷新而变化。1、使用insert函数使模板的一部分不被缓存index.tpl:insert name=get_current_tim

3、eindex.phpfunction 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

4、_time local=zh在get_current_time函数中我们就可以通过$paramslocal来获得属性值。如果在get_current_time函数中需要用到当前smarty对象的方法或属性,就可以通过第二个参数获得。这时你会发现index.tpl已被缓存,但当前时间却随每次刷新在不断变化。2、使用register_function阻止插件从缓存中输出index.tpl:current_time/divindex.php:function smarty_function_current_time($params, &$smarty) return date(Y-m-d H:m:s

5、);$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为functionname为用户自定义标签名称,在这里是current_time两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能

6、同上。3、使用register_block使整篇页面中的某一块不被缓存index.tpl:Page created: 0|date_format:%D %H:%M:%SdynamicNow is: 0|date_format:%D %H:%M:%S. do other stuff ./dynamicindex.php:function smarty_block_dynamic($param, $content, &$smarty) return $content;$smarty = new Smarty;$smarty-caching = true;$smarty-register_block

7、(dynamic, smarty_block_dynamic, false);if(!$smarty-is_cached() .$smarty-display(index.tpl);注解:定义一个函数,函数名格式为:smarty_type_name($params, &$smarty)type为blockname为用户自定义标签名称,在这里是dynamic两个参数是必须的,即使在函数中没有使用也要写上。两个参数的功能同上。4、总结(1)对缓存的控制能力:使用register_function和register_block能够方便的控制插件输出的缓冲能力,可以通过第三个参数控制是否缓存,默认是缓

8、存的,需要我们显示设置为false,正如我们试验中的所做的那样复制代码 代码如下:$smarty-register_function(current_time,smarty_function_current_time,false);但insert函数默认是不缓存的。并且这个属性不能修改。从这个意义上讲insert函数对缓存的控制能力似乎不如register_function和register_block强。(2)使用方便性:但是insert函数使用非常方便。不用显示注册,只要在当前请求过程中包含这个函数smarty就会自动在当前请求的过程中查找指定的函数。当然register_function

9、也可以做到不在运行时显示注册。但是那样做的效果跟其他模版函数一样,统统被缓存,并且不能控制。如果你使用在运行时显示调用register_function注册自定义函数,那么一定要在调用is_cached()方法前完成函数的注册工作。否则在is_cached()这一步缓存文档将因为找不到注册函数而导致smarty错误Smarty用户自定义函数实例$smarty-register_function(date_now, print_current_date);function print_current_date($params, &$smarty)if(empty($paramsformat) $format = %b %e, %Y; else $format = $paramsformat;return strftime($format,time();?在模板中使用date_now* or to format differently *date_now format=%Y/%m/%d希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。 对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号