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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
php实现水仙花数示例分享
Apr 03 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
php命令行用法入门实例教程
Oct 27 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
php7下的filesize函数
Sep 30 PHP
聊聊 PHP 8 新特性 Attributes
Aug 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
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
php车辆违章查询数据示例
2016/10/14 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
python映射列表实例分析
2015/01/26 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
我就是这样学习Python中的列表
2019/06/02 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
货代行业个人求职简历的自我评价
2013/10/22 职场文书
大学生创业感言
2014/01/25 职场文书
推荐信格式要求
2014/05/09 职场文书
行政求职信
2014/07/04 职场文书
办公室禁烟通知
2015/04/23 职场文书
庆祝教师节主持词
2015/07/06 职场文书
活动宣传稿范文
2015/07/23 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
Oracle使用别名的好处
2022/04/19 Oracle
python数据处理之Pandas类型转换
2022/04/28 Python