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程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
php生成excel文件的简单方法
Feb 08 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
PHP实现服务器状态监控的方法
Dec 09 PHP
php实现计数器方法小结
Jan 05 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
一个非常实用的php文件上传类
Jul 04 PHP
php微信支付之公众号支付功能
May 30 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
Dec 10 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/11/12 PHP
Redis构建分布式锁
2017/03/28 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
js实现div色块碰撞
2020/01/16 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Web服务器框架 Tornado简介
2014/07/16 Python
Python实现二叉搜索树
2016/02/03 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python根据服务获取端口号的方法
2019/09/25 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
python生成word合同的实例方法
2021/01/12 Python
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
工厂厂长的职责
2013/12/12 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
高中英语教学反思范文
2016/03/02 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers