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 高手之路(一)
Oct 09 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
PHP异步调用socket实现代码
Jan 12 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
May 15 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
PHP自动重命名文件实现方法
Nov 04 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
php7下的filesize函数
Sep 30 PHP
基于PHP实现生成随机水印图片
Dec 09 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实现验证码功能
2006/10/09 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
深入解析php中的foreach问题
2013/06/30 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
extjs fckeditor集成代码
2009/05/10 Javascript
javascript中的作用域scope介绍
2010/12/28 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
关于js中的鼠标事件总结
2017/07/11 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
Python学习笔记(二)基础语法
2014/06/06 Python
python中lambda()的用法
2017/11/16 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
毕业生护理专业个人求职信范文
2014/01/04 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
社区春季防火方案
2014/06/02 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers