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 相关文章推荐
数据库相关问题
Oct 09 PHP
对盗链说再见...
Oct 09 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
PHP比较运算符的详细介绍
Sep 29 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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 文件上传实例代码
2012/04/19 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
浅谈js中的闭包
2015/03/16 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
python中类的属性和方法介绍
2018/11/27 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
基于Python解密仿射密码
2019/10/21 Python
Python运行DLL文件的方法
2020/01/17 Python
Python3运算符常见用法分析
2020/02/14 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
Python gevent协程切换实现详解
2020/09/14 Python
python用Configobj模块读取配置文件
2020/09/26 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
触电现场处置方案
2014/05/14 职场文书
项目投资合作意向书
2014/07/29 职场文书
辞职信的写法
2015/02/27 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
MySQL一些常用高级SQL语句
2021/07/03 MySQL
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android