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 相关文章推荐
PHP仿盗链代码
Jun 03 PHP
php中将字符串转为HTML的实体引用的一个类
Feb 03 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
PHP文件读取功能的应用实例
May 08 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
PHP信号处理机制的操作代码讲解
Apr 19 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
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
python实现将文本转换成语音的方法
2015/05/28 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
助人为乐道德模范事迹材料
2014/08/16 职场文书
投诉书格式范本
2015/07/02 职场文书
大学生军训感言
2015/08/01 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
详解Django的MVT设计模式
2021/04/29 Python
python实现简易自习室座位预约系统
2021/06/30 Python
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记