最新消息:文章中包含代码时,请遵守代码高亮规范!

PHP 缓存技术总结【原创】

PHP aaron 225浏览 0评论

由于之前做项目需要缓存来处理一些数据,所以去研究了下,发现php缓存的方法还是挺多的,下面我就来详细介绍一下吧。

1、全页面静态化缓存

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

一种比较常用的实现方式是用输出缓存:

php ob_start 与 ob_end_flush() 是 php 的缓冲输出函数。
ob_start([string output_callback])- 打开输出缓冲区,所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,
可选得回调函数用于处理输出结果信息。
ob_end_flush – 结束(发送)输出缓冲区的内容,关闭输出缓冲区。
Ob_start()

******要运行的代码*******

$content = Ob_get_contents();

****将缓存内容写入html文件*****

Ob_end_flush();

2、页面部分缓存

该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存(ESI技术)。

ESI技术 网上通用的解释如下:通过使用简单的标记语言来对那些可以加速和不能加速的网页中的内容片断进行描述,每个网页都被划分成不同的小部分分别赋予不同的缓存控制 策略,使Cache服务器可以根据这些策略在将完整的网页发送给用户之前将不同的小部分动态地组合在一起。通过这种控制,可以有效地减少从服务器抓取整个页面的次数,而只用从原服务器中提取少量的不能缓存的片断,因此可以有效降低原服务器的负载,同时提高用户访问的响应时间。与SSI不同的是,ESI多在缓存服务器或代理服务器上执行!

例子:

<html><head><title>ESI Demo</title></head><body>

<esi:include src=”login.php” /> <div><h3>这中间是可静态化html内容</3></div></body><html>

优点:可用于缓存整个页面或页面片段,比较适合用于缓存服务器上;缺点:目前支持ESI的软件还比较少,官方更新也略显缓慢,因此使用不是很广!

该种方式可以用于如商城中的商品页;

3、数据缓存

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

4、 时间触发缓存:

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

5.按内容缓存:

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

6.内存缓存

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

例子:

<?php      

$memcachehost = ‘192.168.1.9’;     

$memcacheport = 11211;    

$memcachelife = 60;     

$memcache = new Memcache;     

$memcache->connect($memcachehost,$memcacheport) or die (“Could not connect”);     

$memcache->set(‘key’,‘缓存的内容’);     

$get = $memcache->get($key);       //获取信息 ?>

7.php的缓冲器

有eaccelerator, apc, phpa,xcache,这个这个就不说了,网上都有详细的讲解 请自行百度。

当然缓存不止这些,不过目前只实验过这些,其他的大家也可以网上搜搜了解了解。

 

 

 

转载时请注明出处及相应链接,本文永久地址:http://blog.it985.com/22033.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者aaron的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!