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实现无限级分类实现代码(递归方法)
Jan 01 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
php 文章调用类代码
Aug 11 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
Thinkphp实现自动验证和自动完成
Dec 19 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
php判断数组是否为空的实例方法
May 10 PHP
Laravel Reponse响应客户端示例详解
Sep 03 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
Python读取Excel的方法实例分析
2015/07/11 Python
python中关于for循环的碎碎念
2017/06/30 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
为什么会有内存对齐
2016/10/10 面试题
奖学金自我鉴定范文
2013/10/03 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
课外访万家心得体会
2014/09/03 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
Go各时间字符串使用解析
2021/04/02 Golang