smarty缓存用法分析

 更新时间:2014年12月16日 09:00:26   投稿:shichen2014   我要评论
这篇文章主要介绍了smarty缓存用法,以实例形式分析了smarty缓存的特点及使用技巧,非常具有实用价值,需要的朋友可以参考下

本文详细分析了smarty缓存的用法。分享给大家供大家参考。具体分析如下:

一开始以为smarty只是用来做一些掩饰php代码功能,但是后来才知道还有模板缓存这个强大的功能。

什么是模板缓存呢,就是我们在从数据库里面取出一些数据输出到模板的访问的时候,每一次都对数据库进行访问,但是其实每一次的数据库访问都是相同的,假如网址的流量很大,这种重复的访问完全是没有必要的,对于数据库有很大压力。smarty就提供了缓存技术,用于解决这个问题。

首先使用smarty的缓存,我们有一些要设置的:

开启缓存

复制代码 代码如下:
$Smarty->caching = true;

设置缓存周期

复制代码 代码如下:
$Smarty->cache_lifetime = 30;

设置缓存目测

复制代码 代码如下:
$Smarty->cache_dir = './cache';

然后对于数据库访问的那一部分,我们首先做一次判断,是否已经对此部分进行过缓存了

复制代码 代码如下:
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的参数,那么就有可能影响到缓存,多个不同的参数只缓存了第一次生成的,所以这里就需要用到单模板多缓存技术,其实也很简单,只要在
复制代码 代码如下:
$Smarty->assign('goods',$goods);
这里添加了一个参数,这个参数就是从地址栏获取的,当然,在判断的时候也需要把参数添加进去判断是否已经缓存了
复制代码 代码如下:
$Smarty->isCached('01.html',goods_id);

那么这个缓存要怎么删除呢,很简单,只需要调用

复制代码 代码如下:
$Smarty->clearCache('01.html',$goods_id)
第二个参数可选,假如不填就直接删除这个模板下面的所有缓存。
最后,有时候在调试程序的时候不缓存,我们也可以设置这个参数用于暂时停止缓存:
复制代码 代码如下:
$Smarty->force_cache = true;

最后有一点注意,缓存的生命周期是指,在这个时间过了以后,再次刷新这个页面会用新的缓存代替旧的,假如不产生新的缓存,那么旧的缓存是不会自动删除的,所以在实际项目开发中,假如缓存很多的话,其实也是很影响存储的。

其实我们需要缓存的也只是很少一部分的HTML,现在很多站都使用了memcached来缓存。

希望本文所述对大家的PHP程序设计有所帮助。

相关文章

  • PHP nl2br函数 将换行字符转成 <br>

    PHP nl2br函数 将换行字符转成 <br>

    PHP nl2br函数 将换行字符转成 <br>,不是很了解的朋友可以参考下。
    2009-08-08
  • PHP实现无限极分类生成分类树的方法

    PHP实现无限极分类生成分类树的方法

    这篇文章主要介绍了PHP实现无限极分类生成分类树的方法,结合实例形式简单分析了无限极分类的原理与实现方法,涉及PHP数组遍历与判断相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • CodeIgniter php mvc框架 中国网站

    CodeIgniter php mvc框架 中国网站

    CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个使用共享主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架
    2008-05-05
  • 用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

    用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

    作为一名非专业的PHP开发者,想要较方便地读懂并搞清楚一个PHP功能模块的运行细节,搭建一个PHP调试环境,然后单步调试程序,以掌握程序的整个运行过程显的尤为重要
    2014-01-01
  • PHP实现统计一个数字在排序数组中出现次数的方法

    PHP实现统计一个数字在排序数组中出现次数的方法

    这篇文章主要介绍了PHP实现统计一个数字在排序数组中出现次数的方法,涉及php基于二分查找算法在数组中进行查找及统计的相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • php 求质素(素数) 的实现代码

    php 求质素(素数) 的实现代码

    php 求质素(素数) 的实现代码,需要的朋友可以参考下。
    2011-04-04
  • 简单谈谈php浮点数精确运算

    简单谈谈php浮点数精确运算

    如果用php的+-*/计算浮点数的时候,可能会遇到一些计算结果错误的问题,所以基本上大部分语言都提供了精准计算的类库或函数库,比如php有BC高精确度函数库,下面我们介绍一下一些常用的BC高精确度函数使用。
    2016-03-03
  • 深入解读php中关于抽象(abstract)类和抽象方法的问题分析

    深入解读php中关于抽象(abstract)类和抽象方法的问题分析

    这篇文章主要介绍了php中关于抽象(abstract)类和抽象方法的问题分析,有需要的朋友可以参考一下
    2014-01-01
  • php 在线打包_支持子目录

    php 在线打包_支持子目录

    用php实现的在线打包的工具,并可以支持子目录使用纯php对目录和文件进行打包压缩,压缩当然不能跟winrar比(压缩比差不多相当于winrar压缩时的最快模式)。
    2008-06-06
  • MYSQL 小技巧 -- LAST_INSERT_ID

    MYSQL 小技巧 -- LAST_INSERT_ID

    用PHP调用mysql , 内置的LAST_INSERT_ID() 这个函数可能没有什么人用,用的最多的还是 mysql_insert_id()
    2009-11-11

最新评论