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中去掉字符串首尾空格的方法
May 19 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
php下获取http状态的实现代码
May 09 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
PHP实现远程下载文件到本地
May 17 PHP
PHP整合PayPal支付
Jun 11 PHP
Yii实现显示静态页的方法
Apr 25 PHP
PHP编写简单的App接口
Aug 28 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
php实现简单四则运算器
Nov 29 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 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
php学习笔记之基础知识
2014/11/08 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
详解vuex的简单使用
2018/03/12 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
Python日志模块logging简介
2015/04/13 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
python安装Scrapy图文教程
2017/08/14 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
pytorch打印网络结构的实例
2019/08/19 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
linux下进程间通信的方式
2014/12/23 面试题
仓库管理专业个人自我评价范文
2013/11/11 职场文书
六五普法规划实施方案
2014/03/21 职场文书
优秀语文教师事迹
2014/05/18 职场文书
暑期教师培训方案
2014/06/07 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
高中体育课教学反思
2016/02/16 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书