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 相关文章推荐
实时抓取YAHOO股票报价的代码
Oct 09 PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
php实现简单文件下载的方法
Jan 30 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
php处理复杂xml数据示例
Jul 11 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
浅谈laravel中的关联查询with的问题
Oct 10 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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自动适应范围的分页代码
2008/08/05 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python创建xml的方法
2015/03/10 Python
Python argv用法详解
2016/01/08 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
奥巴马演讲稿
2014/01/08 职场文书
2014年稽查工作总结
2014/12/20 职场文书
副总经理岗位职责
2015/02/02 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
Django基础CBV装饰器和中间件
2022/03/22 Python
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL