PHP数据缓存技术


Posted in PHP onFebruary 14, 2007

数据缓存是web开发中常用的一种性能优化方法。目前主要文件缓存或者数据库缓存两种形式,数据库缓存数据库不是什么不可能的事情,的确也是很好很重要的。我认为传统数据库主要是从业务层、模块设计等方面来考虑的,而缓存数据库主要是从实现层来设计的,主要是为了缓存常用的多表查询之类的。这里主要将的是文件缓存,网上很多资料了,这里我转载了一些原理资料。
   Cache是“以空间换时间”策略的典型应用模式,是提高系统性能的一种重要方法。缓存的使用在大访问量的情况下能够极大的减少对数据库操作的次数,明显降低系统负荷提高系统性能。相比页面的缓存,结果集是一种“原始数据”不包含格式信息,数据量相对较小,而且可以再进行格式化,所以显得相当灵活。由于PHP是“一边编译一边执行”的脚本语言,某种程度上也提供了一种相当方便的结果集缓存使用方法——通过动态include相应的数据定义代码段的方式使用缓存。如果在“RamDisk”上建缓存的话,效率应该还可以得到进一步的提升。以下是一小段示例代码,供参考。


<?
// load data with cache  function load_data($id,$cache_lifetime) {  // the return data  $data = array();  // make cache filename  $cache_filename ‘cache_‘.$id..php‘// check cache file‘s last modify time  $cache_filetime filemtime($cache_filename); 

if (

time() - $cache_filetime <= $cache_lifetime) {  //** the cache is not expire  include($cache_filename); 

} else { 

//** the cache is expired 

// load data from database 

// ... 

while ($dbo->nextRecord()) {  // $data[] = ...  // format the data as a php file  $data_cache "

while (list($key, $val) = each($data)) { 

$data_cache .= "

$data[‘$key‘]=array("; 

$data_cache .= "

‘NAME‘=>"".qoute($val[‘NAME‘])."\","  $data_cache .= "‘VALUE‘=>\"".qoute($val[‘VALUE‘])."\""  $data_cache .= ";);\r\n"

$data_cache "?>\r\n"// save the data to the cache file  if ($fd fopen($cache_filename,‘w+)) {  fputs($fd,$data_cache);  fclose($fd); 

return 

$data

?> 

适用情况:
1.数据相对比较稳定,主要是读取操作。
2.文件操作要比数据库操作快。
3.复杂数据访问,大数据量访问,密集数据访问,系统数据库负载极重。
4.Web/DB分离结构或者多Web单DB结构。

未经证实的问题:
1.并发访问时对文件的读写是否会引起锁定问题。
2.涉及到的数据文件太多时,性能如何。
扩展思路:
1.生成JavaScript数据定义代码,在客户端调用。
2.还未想到……  

望共同探讨。

PHP 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
php cookie 登录验证示例代码
Mar 16 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 PHP
基于PHP array数组的教程详解
Jun 05 PHP
php获取bing每日壁纸示例分享
Feb 25 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 PHP
PHP实现读取文件夹及批量重命名文件操作示例
Apr 15 PHP
再次研究下cache_lite
Feb 14 #PHP
cache_lite试用
Feb 14 #PHP
一个捕获函数输出的函数
Feb 14 #PHP
模拟flock实现文件锁定
Feb 14 #PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 #PHP
简单采集了yahoo的一些数据
Feb 14 #PHP
自己前几天写的无限分类类
Feb 14 #PHP
You might like
php在线代理转向代码
2012/05/05 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
javascript基础知识讲解
2017/01/11 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
深入探究node之Transform
2017/07/20 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
印度低票价航空公司:GoAir
2017/10/11 全球购物
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
求职信怎么写范文
2014/05/26 职场文书
企业领导对照检查材料
2014/08/20 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python