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 相关文章推荐
配置支持SSI
Nov 25 PHP
php基础知识:类与对象(5) static
Dec 13 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
May 02 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
PHP导出Excel实例讲解
Jan 24 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
使用PHP开发留言板功能
Nov 19 PHP
TP5框架页面跳转样式操作示例
Apr 05 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语法(5)
2006/10/09 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
Javascript基础教程之比较操作符
2015/01/18 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
python获取代码运行时间的实例代码
2018/06/11 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
python实现局域网内实时通信代码
2019/12/22 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
附答案的Java面试题
2012/11/19 面试题
装修五一活动策划案
2014/01/23 职场文书
粗加工管理制度
2014/02/04 职场文书
广告设计应届生求职信
2014/03/01 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
出差报告范文
2014/11/06 职场文书
七年级思品教学反思
2016/02/20 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
PHP设计模式(观察者模式)
2021/07/07 PHP
公历12个月名称的由来
2022/04/12 杂记