您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

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

来源:未知 责任编辑:责任编辑 发表时间:2013-08-27 11:21 点击:

  之前一直使用其它的模板引擎,今天在听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);  

  然后在模板中:

 

  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(nocachesmarty_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测试
    • 十天学会php之第六天
    • 几种显示数据的方法的比较
    • 使用xmlhttp为网站增加域名查询功能
    • PHP+MYSQL+Javascript数据库查询结果的动态显示
    • 查找数组中指定键名的值
    • 用redis实现跨服务器session
    • 用新浪微博接口发送图片微博失败的原因
    • smarty局部缓存技术[源码分析]
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1