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查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 PHP
开启PHP的伪静态模式
Dec 31 PHP
10个值得深思的PHP面试题
Nov 14 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
php实现登录页面的简单实例
Sep 29 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
操作Oracle的php类
2006/10/09 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP语法速查表
2007/01/02 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
python三大神器之fabric使用教程
2019/06/10 Python
python自动化之Ansible的安装教程
2019/06/13 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
kfc实习自我鉴定
2013/12/14 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
小学数学课后反思
2014/04/23 职场文书
局火灾防控工作方案
2014/05/25 职场文书