smarty缓存用法分析


Posted in PHP onDecember 16, 2014

本文详细分析了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 相关文章推荐
php 调试利器debug_print_backtrace()
Jul 23 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
PHP队列用法实例
Nov 05 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 PHP
Yii框架实现图片上传的方法详解
May 20 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 #PHP
smarty表格换行实例
Dec 15 #PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 #PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 #PHP
PHP缓存集成库phpFastCache用法
Dec 15 #PHP
php图片的二进制转换实现方法
Dec 15 #PHP
php第一次无法获取cookie问题处理
Dec 15 #PHP
You might like
php关闭warning问题的解决方法
2016/05/17 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
用Python实现KNN分类算法
2017/12/22 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
python处理“
2019/06/10 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
护士辞职信范文
2014/01/19 职场文书
安全资金保障制度
2014/01/23 职场文书
商务英语专业求职信
2014/06/26 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
Go获取两个时区的时间差
2022/04/20 Golang