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删除非空目录的函数代码小结
Feb 28 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
深入php处理整数函数的详解
Jun 09 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
微信接口生成带参数的二维码
Jul 31 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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文件上传实例详解!!!
2007/01/02 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
学习ExtJS border布局
2009/10/08 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
Js组件的一些写法
2010/09/10 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python多线程下载文件的方法
2015/07/10 Python
python类的继承实例详解
2017/03/30 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
python pygame实现方向键控制小球
2019/05/17 Python
Django中create和save方法的不同
2019/08/13 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
大学生毕业的自我鉴定
2013/11/13 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
四年级语文教学反思
2014/02/05 职场文书
总经理工作职责范文
2014/03/14 职场文书
质量安全标语
2014/06/07 职场文书
大学迎新生标语
2014/10/06 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
js不常见操作运算符总结
2021/11/20 Javascript
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis