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中利用XML技术构造远程服务(下)
Oct 09 PHP
php下实现折线图效果的代码
Apr 28 PHP
PHP insert语法详解
Jun 07 PHP
PHP 配置文件中open_basedir选项作用
Jul 19 PHP
批量修改RAR文件注释的php代码
Nov 20 PHP
解析PHP自带的进位制之间的转换函数
Jun 08 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
php中创建和调用webservice接口示例
Jul 25 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 PHP
详细分析PHP 命名空间(namespace)
Jun 30 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实现长连接的方法与注意事项的问题
2013/05/10 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
jquery批量控制form禁用的代码
2013/08/06 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
js实现全选反选不选功能代码详解
2019/04/24 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
实例讲解Python爬取网页数据
2018/07/08 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
python绘制简单彩虹图
2018/11/19 Python
在vscode中配置python环境过程解析
2019/09/28 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
二年级学生评语大全
2014/04/23 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
合理化建议书范文
2015/09/14 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫