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中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 PHP
修改PHP的memory_limit限制的方法分享
Feb 21 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
php实现的mongodb操作类
May 28 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 PHP
php查询及多条件查询
Feb 26 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
【python】matplotlib动态显示详解
2019/04/11 Python
python五子棋游戏的设计与实现
2019/06/18 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
python实现最小二乘法线性拟合
2019/07/19 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
python实现五子棋程序
2020/04/24 Python
Python实现数字的格式化输出
2020/08/01 Python
python openCV自制绘画板
2020/10/27 Python
高校毕业生登记表自我鉴定
2013/11/03 职场文书
优秀经理获奖感言
2014/03/04 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
运动会加油稿
2015/07/22 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
python状态机transitions库详解
2021/06/02 Python
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技