找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 884|回复: 0
打印 上一主题 下一主题

smarty缓存用法分析

[复制链接]

2588

主题

2588

帖子

7694

积分

论坛元老

Rank: 8Rank: 8

积分
7694
跳转到指定楼层
楼主
发表于 2018-2-14 05:51:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文详细分析了smarty缓存的用法。分享给大家供大家参考。具体分析如下:
一开始以为smarty只是用来做一些掩饰php代码功能,但是后来才知道还有模板缓存这个强大的功能。
什么是模板缓存呢,就是我们在从数据库里面取出一些数据输出到模板的访问的时候,每一次都对数据库进行访问,但是其实每一次的数据库访问都是相同的,假如网址的流量很大,这种重复的访问完全是没有必要的,对于数据库有很大压力。smarty就提供了缓存技术,用于解决这个问题。
首先使用smarty的缓存,我们有一些要设置的:
开启缓存
[U]复制代码[/U] 代码如下Smarty->caching = true;
设置缓存周期
[U]复制代码[/U] 代码如下Smarty->cache_lifetime = 30;
设置缓存目测
[U]复制代码[/U] 代码如下Smarty->cache_dir = './cache';
然后对于数据库访问的那一部分,我们首先做一次判断,是否已经对此部分进行过缓存了
[U]复制代码[/U] 代码如下:if(!$Smarty->isCached('01.html')){//判断是否已经进行过缓存,如果已经进行过就不走这里,直接输出模板  
    $conn = mysql_connect('localhost','root','root');  
    mysql_query('set names utf8');  
    mysql_query('use market');  
    $rs = mysql_query('select goods_id,goods_name,shop_price,add_time from goods where goods_id = ' . $goods_id,$conn);  
    $goods =array();  
    while($row = mysql_fetch_assoc($rs)){  
        $goods[] = $row;  
    }  
    echo '走了数据库';  
    $Smarty->assign('goods);  
}
但是在smarty的缓存里面还有需要注意的地方,就是假如从地址栏里面get的参数,那么就有可能影响到缓存,多个不同的参数只缓存了第一次生成的,所以这里就需要用到单模板多缓存技术,其实也很简单,只要在
[U]复制代码[/U] 代码如下Smarty->assign('goods',$goods);这里添加了一个参数,这个参数就是从地址栏获取的,当然,在判断的时候也需要把参数添加进去判断是否已经缓存了[U]复制代码[/U] 代码如下Smarty->isCached('01.html',goods_id);
那么这个缓存要怎么删除呢,很简单,只需要调用[U]复制代码[/U] 代码如下Smarty->clearCache('01.html',$goods_id)第二个参数可选,假如不填就直接删除这个模板下面的所有缓存。
最后,有时候在调试程序的时候不缓存,我们也可以设置这个参数用于暂时停止缓存:[U]复制代码[/U] 代码如下Smarty->force_cache = true;
最后有一点注意,缓存的生命周期是指,在这个时间过了以后,再次刷新这个页面会用新的缓存代替旧的,假如不产生新的缓存,那么旧的缓存是不会自动删除的,所以在实际项目开发中,假如缓存很多的话,其实也是很影响存储的。
其实我们需要缓存的也只是很少一部分的HTML,现在很多站都使用了memcached来缓存。
希望本文所述对大家的PHP程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • php smarty模版引擎中的缓存应用
  • php smarty模版引擎中的缓存应用
  • Smarty的配置与高级缓存技术分享
  • smarty 缓存控制前的页面静态化原理
  • PHP模板引擎Smarty的缓存使用总结
  • smarty模板局部缓存方法使用示例
  • Smarty局部缓存的几种方法简介
  • PHP文件缓存smarty模板应用实例分析
  • Smarty高级应用之缓存操作技巧分析
  • Smarty模板引擎缓存机制详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端