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边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
关于Sphinx创建全文检索的索引介绍
Jun 25 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
关于Laravel Route重定向的一个注意点
Jan 16 PHP
详解php框架Yaf路由重写
Jun 20 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
PHP页面静态化――纯静态与伪静态用法详解
Jun 05 PHP
php使用event扩展的io复用测试的示例
Oct 20 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教程 基本语法
2009/10/23 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
PHP简单日历实现方法
2016/07/20 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python检测服务器是否正常
2014/02/16 Python
python读取word文档的方法
2015/05/09 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
初中生期末考试的自我评价
2013/12/17 职场文书
党员干部一句话承诺
2014/05/30 职场文书
火箭队口号
2014/06/18 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
导游欢迎词范文
2015/01/23 职场文书
商场广播稿范文
2015/08/19 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
JavaScript ES6的函数拓展
2022/01/18 Javascript