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 截取字符串并以零补齐str_pad() 函数
May 07 PHP
php在文件指定行中写入代码的方法
May 23 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
thinkphp的CURD和查询方式介绍
Dec 19 PHP
php实现图片文件与下载文件防盗链的方法
Nov 03 PHP
PHP连接操作access数据库实例
Mar 30 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
php微信公众平台开发(三)订阅事件处理
Dec 06 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
实例解析php的数据类型
Oct 24 PHP
解决Laravel5.2 Auth认证退出失效的问题
Oct 14 PHP
Thinkphp页面跳转设置跳转等待时间的操作
Oct 16 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的switch判断语句的“高级”用法详解
2014/10/01 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
python Shapely使用指南详解
2020/02/18 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
《走一步再走一步》教学反思
2014/02/15 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
结婚通知短信大全
2015/04/17 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL