码迷,mamicode.com
首页 > Web开发 > 详细

PHP页面静态化3(PHP缓存机制详解)

时间:2016-04-22 16:20:44      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

我们可以使用PHP自带的缓存机制来完成页面静态化,但是仅靠PHP自身的缓存机制并不能完美的解决页面静态化,往往需要和其他静态化技术(通常是伪静态技术)结合使用。

output buffer是php自带缓存,可以通过配置php.ini关闭,程序缓存是一直开启状态,没法关闭。程序缓存中内容没法修改,output buffer中内容可以修改,修改完成后全部发给程序缓存。

一个网页对应一个消息,消息包括消息头和消息体,每个消息必须有消息头,消息体可以为空,如果程序中没有定义消息头,使用默认的。

技术分享

由图可知,浏览器向apache发送http请求后,apache根据httpd.conf文件,将请求转发给php处理模块,php处理模块根据php.ini处理test2.php,如果php.ini关闭output buffer,那么php处理模块将信息头部和信息内容直接发送给程序缓存,如果php.ini开启output buffer,那么php处理模块将信息头部和信息内容直接发送给Output buffer,Output buffer接收完后再发送给程序缓存。

学习一个实例:

<?php
echo “aaa”;
header(“content-type:text/htm;charset=utf-8”);
echo “hello”;
?>

  如果output buffer关闭,这段程序报警告。PHP处理模块一边处理程序,一边将处理结果发送到程序缓存,处理第1行,将默认消息头以及aaa作为消息体一部分发送到程序缓存,执行第2行,再次发送消息头,此时程序缓存中有消息头了,且没法修改,此时报警告。因此可以在程序中将output buffer开启,

<?php
ob_start();
echo “aaa”;
header(“content-type:text/htm;charset=utf-8”);
echo “hello”;
?>

  执行第1行开启缓存,执行第2行,将默认消息头以及aaa作为消息体一部分发送给output buffer,执行第3行,修改消息头,执行第4行,将hello发送给output buffer,程序执行完后,output buffer将消息发送给程序缓存,程序缓存输出。

下面是一些php自带缓存指令:

ob_start()  //开启缓存

ob_clean()  //清空缓存

ob_end_clean()  //清空缓存,关闭缓存

ob_flush() //刷新缓存(将缓存现有内容输出)

ob_end_flush()  //刷新缓存,并关闭缓存

ob_get_contents()//输出缓存内容

 

 

flush()是输出程序缓存指令;

ob_flush()是输出自带缓存指令;

PHP页面静态化3(PHP缓存机制详解)

标签:

原文地址:http://www.cnblogs.com/usa007lhy/p/5421545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!