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 相关文章推荐
支持oicq头像的留言簿(一)
Oct 09 PHP
PHP+APACHE实现用户论证的方法
Oct 09 PHP
php连接mysql数据库代码
Mar 10 PHP
php 字符转义 注意事项
May 27 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
使用PHP函数scandir排除特定目录
Jun 12 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
php删除数组指定元素实现代码
May 03 PHP
Laravel框架实现的批量删除功能示例
Jan 16 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
php二分查找二种实现示例
2014/03/12 PHP
php中curl使用指南
2015/02/05 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
jQuery timers计时器简单应用说明
2010/10/28 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
Python 变量的创建过程详解
2019/09/02 Python
python实现计算器功能
2019/10/31 Python
使用python+whoosh实现全文检索
2019/12/09 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
python怎么对数字进行过滤
2020/07/05 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
法学研究生自我鉴定范文
2013/12/04 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
2014年党支部工作总结
2014/11/13 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
辅导员学期工作总结
2015/08/14 职场文书
学习委员竞选稿
2015/11/20 职场文书