smarty缓存用法分析
作者:shichen2014 时间:2024-06-07 15:44:41
本文详细分析了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程序设计有所帮助。
标签:smarty,缓存,用法
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python完美还原超级玛丽游戏附代码与视频
2022-03-20 16:57:41
![](https://img.aspxhome.com/file/2023/1/117481_0s.gif)
Python全栈之文件函数和函数参数
2023-05-11 02:28:21
利用OpenCV和Python实现查找图片差异
2023-01-06 07:22:22
![](https://img.aspxhome.com/file/2023/8/128778_0s.jpg)
Python使用win32com.client的方法示例
2021-03-22 14:32:48
深入了解和应用Python 装饰器 @decorator
2024-01-02 09:20:05
![](https://img.aspxhome.com/file/2023/2/72152_0s.jpg)
php使用递归与迭代实现快速排序示例
2023-11-14 09:46:31
Python importlib动态导入模块实现代码
2022-07-31 05:52:25
Python2.X/Python3.X中urllib库区别讲解
2022-08-03 01:45:39
python字符串操作详析
2022-09-14 04:57:08
![](https://img.aspxhome.com/file/2023/9/103329_0s.png)
Python列表删除元素del、pop()和remove()的区别小结
2021-12-02 07:32:41
python自动化测试三部曲之request+django实现接口测试
2023-07-11 05:12:00
![](https://img.aspxhome.com/file/2023/3/114513_0s.png)
CentOS6.5下RPM方式安装mysql5.6.33的详细教程
2024-01-23 12:43:02
Pycharm简单使用教程(入门小结)
2021-09-03 04:13:04
![](https://img.aspxhome.com/file/2023/1/131071_0s.jpg)
CSS教程:简单理解em
2008-07-03 12:44:00
解决编码问题:UnicodeDecodeError: 'utf-8' codec can't decod
2023-03-25 02:45:59
![](https://img.aspxhome.com/file/2023/8/103148_0s.png)
asp如何动态生成WBMP?
2009-11-18 20:36:00
python常见读取语音的3种方法速度对比
2021-03-08 11:12:33
Golang 编译成DLL文件的操作
2024-05-09 09:55:30
使用ffmpeg 合并aac格式音频文件的方法
2023-05-25 02:44:56
Mysql安装与配置调优及修改root密码的方法
2024-01-15 19:35:06