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 insert语法详解
Jun 07 PHP
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
PHP设计模式之迭代器模式
Jun 17 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
深入浅出讲解:php的socket通信原理
Dec 03 PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP执行系统命令函数实例讲解
Mar 03 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
解析smarty模板中类似for的功能实现
2013/06/18 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
wxPython实现画图板
2020/08/27 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
汽车工程专业应届生求职信
2013/10/19 职场文书
晚会邀请函范文
2014/01/24 职场文书
植树节口号
2014/06/21 职场文书
车间主任岗位职责
2015/02/03 职场文书
民事上诉状范文
2015/05/22 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫