smarty局部缓存技术[源码分析]

作者: 来源: 时间:2010-11-13 11:36:58 点击: 48

  之前一直使用其它的模板引擎,今天在听PHP100培训课程的时候,讲到了smarty模板引擎的局部缓存,感觉挺好的,在此结合自身的理解,感慨一翻,要是有什么不对的地方,希望朋友跟贴回复。 大家一起共勉学习。 同时也感谢张老师,为像我们这样的PHP初学者提供一个非常优秀的学习平台。

发现smarty是如此强大与神奇的一个东东,使我对它的好感不亚于对以前使用的模板引擎。

由于我默认是开启smarty的缓存的,但是在些地方的数据是实时更新或者更新较快的,不宜缓存,这样,局部缓存便有用武之地了。

1,insert 法

定义一个函数显示时间的:

1. function insert_get_current_time(){

2.     $timestamp=emptyempty($timestamp)?time():$timestamp;

3.     $timeoffset=(int) '+8';

4.     return $ret=gmdate(“Y-n-j g:ia”, $timestamp + $timeoffset * 3600);

5. }

然后在模板中:

1. {insert name=“get_current_time”}

这样每次打开页面,显示的都是即时时间,而不是缓存的。注意这里的函数名一定要以insert开头,模板中的name与之对应。

这种方法简单,但是如果要显示的内容是一大块的,就不宜使用了。

2,动态block 法

1. //部分缓存

2. function smarty_block_nocache($param, $content, $smarty)

3.  {

4.     return $content;

5. }

6. $smarty->register_block(‘nocache', 'smarty_block_nocache', false);

在模板中:

1. {nocache}

2. {$smarty.now}

3. {/nocache}

这样每次刷新页面,显示的时间都是不同的。

3,插件block 法

在Smarty/plugins目录下建一个文件

block.nocache.php 内容如下:

1. <?php

2. function smarty_block_nocache($param, $content, $smarty)

3. {

4.       return $content;

5. }

6. ?>

这样做与方法2的效果是一样的,模板中标签也一样。在 php文件中就不必要再register_block了,很方便。
◇服务项目
◇业内新闻
◇帮助·常见问题
◇PHP程序开发知识集
◇联系我们

地址:北京市海淀区花园东路30号花园商务会馆6201、6202

客服热线:
(全国)400-666-3053

邮箱:bd@bjphp.com

友情链接: PHP网站建设 | PHP程序开发 | 北京服务器维护 | linux服务器维护 | php二次开发 | php网站开发 | PHP培训 | 北京开源动力

我们提供专业的:PHP网站制作 | PHP程序开发 | PHP网站建设 | Linux服务器维护

版权所有 ©2008-2012 北京开源动力信息技术有限公司 在线咨询:     QQ在线交谈

咨询:(全国)400-666-3053 bd@bjphp.com 工商注册号:110228012631348 京ICP备10040651号-1 京公网安备110228000111