发现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);  

  然后在模板中:

 

  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} 

 

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


 

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

  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了,很方便。