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与SQL注入攻击[二]
Apr 17 PHP
PHP 面向对象详解
Sep 13 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
php生成短域名函数
Mar 23 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
PHP实现的进度条效果详解
May 03 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
PHP 类与构造函数解析
Feb 06 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 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对文件进行hash运算的方法
2015/04/03 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
修改file按钮的默认样式实现代码
2013/04/23 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python 字符串格式化代码
2013/03/17 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
iPython pylab模式启动方式
2020/04/24 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
总裁助理岗位职责
2014/02/17 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
欢迎领导标语
2014/06/27 职场文书
项目负责人岗位职责
2015/02/15 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书