PHP缓存技术的多种方法小结


Posted in PHP onAugust 14, 2012

1、普遍缓存技术:

数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。

用的最广的例子看Discuz的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时先搜索缓存表。

举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的时候数组分解一下,这样的好处是只读一个表,坏处就是两个数据同步会多不少步骤,数据库永远是瓶颈,用硬盘换速度,是这个的关键点。

2、 页面缓存:

每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些PHP缓存机制类通常有此功能)

3、 时间触发缓存:

检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。

4、 内容触发缓存:

当插入数据或更新数据时,强制更新PHP缓存机制。

5、 静态缓存:

这里所说的静态缓存是指静态化,直接生成HTML或XML等文本文件,有更新的时候重生成一次,适合于不太变化的页面,这就不说了。

以上内容是代码级的解决方案,下面的内容是服务器端的缓存方案,非代码级的,要有多方的合作才能做到

6、 内存缓存:

Memcached是高性能的,分布式的内存对象PHP缓存机制系统,用于在动态应用中减少数据库负载,提升访问速度。

7、 php的缓冲器:

有eaccelerator, apc, phpa,xcache,这个这个就不说了吧,搜索一堆一堆的,自己看啦,知道有这玩意就OK

8、 MYSQL缓存:

这也算非代码级的,经典的数据库就是用的这种方式,看下面的运行时间,0.09xxx之类的

9、 基于反向代理的Web缓存:

如Nginx,SQUID,mod_proxy(apache2以上又分为mod_proxy和mod_cache)

10、 DNS轮询:
 

BIND是一款开放源码的DNS服务器软件,这个要说起来就大了,自己搜索去,大家知道有这个东西就行了。

我知道的有chinacache等大站就是这样做的,说简单点就是多服务器啦,把同一个页面或文件缓存到不同的服务器上,按南北自动解析到相关的服务器中。

PHP 相关文章推荐
PHP的栏目导航程序
Oct 09 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
标准PHP的AES加密算法类
Mar 12 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
php身份证号码检查类实例
Jun 18 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
PHP filesize函数用法浅析
Feb 15 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 #PHP
php调用dll的实例操作动画与代码分享
Aug 14 #PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 #PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 #PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 #PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 #PHP
php中++i 与 i++ 的区别
Aug 08 #PHP
You might like
php桌面中心(四) 数据显示
2007/03/11 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
Javascript倒计时代码
2010/08/12 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
js实现旋转木马效果
2017/03/17 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
Php多进程实现代码
2018/05/07 Python
python为什么会环境变量设置不成功
2020/06/23 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
Django实现随机图形验证码的示例
2020/10/15 Python
Python os库常用操作代码汇总
2020/11/03 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
华为c/c++笔试题
2016/01/25 面试题
捐款倡议书范文
2014/02/02 职场文书
开朗女孩的自我评价
2014/02/10 职场文书
大学生助学金感谢信
2015/01/21 职场文书
计划生育个人总结
2015/03/02 职场文书
政审证明材料
2015/06/19 职场文书
党员身份证明材料
2015/06/19 职场文书
投资入股协议书
2016/03/22 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python