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使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
php基本函数汇总
Jul 09 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
Zend Framework常用校验器详解
Dec 09 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
PHP中include和require的区别实例分析
May 07 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
php精度计算的问题解析
Jun 21 PHP
PHP迭代器和生成器用法实例分析
Sep 28 PHP
PHP实用小技巧之调用录像的方法
Dec 05 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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调用三种数据库的方法(1)
2006/10/09 PHP
php图片验证码代码
2008/03/27 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
PHP中cookie知识点学习
2018/05/06 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
js原型链原理看图说明
2012/07/07 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
python学习 流程控制语句详解
2016/06/01 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
python实现公司年会抽奖程序
2019/01/22 Python
Python3 max()函数基础用法
2019/02/19 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
技术人员面试提纲
2013/11/28 职场文书
先进集体获奖感言
2014/02/13 职场文书
节能标语大全
2014/06/21 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
详解Python内置模块Collections
2022/03/22 Python
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js