一,PHP缓存机制详解

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

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

当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方 怎么干。HTTP传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,后者是可选的,而前者是必须的。一个网页对应一个消息,发送消息时候,一般来说,都是先消息头部分,在消息头部分指明了 消息体部分的长度,然后使用\r\n\r\n来表示消息头部分结束,接下来是消息体部分。如果没有定义消息头,发送默认的消息头。

由图可知,浏览器向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缓存,配置php.ini。

(1)php.ini,output_buffering=off,关闭php缓存;

(2)display_errors = on,显示错误;

(3)error_reporting=E_ALL & ~E_NOTICE,表示所有非NOTICE级别的错误日志都打印出来;

之后执行以下代码。

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

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

<?php
ob_start();
echo “aaa”;
header(“content-type:text/html;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()  //刷新缓存,并关闭缓存

$contents = ob_get_contents() //获得缓存内容

file_put_contents("d:/log.txt",$contents) //将缓存内容打印到文本

三,flush与ob_flush区别

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

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

二,PHP缓存机制详解的更多相关文章

  1. nginx平台初识(二) 浏览器 HTTP 协议缓存机制详解

    1.缓存的分类 缓存分为服务端侧(server side,比如 Nginx.Apache)和客户端侧(client side,比如 web browser). 服务端缓存又分为 代理服务器缓存 和 反 ...

  2. PHP缓存机制详解

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

  3. 浏览器 HTTP 协议缓存机制详解

    最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control.为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag, ...

  4. hibernate缓存机制详解

    hiberante面试题—hibernate缓存机制详解   这是面试中经常问到的一个问题,可以按照我的思路回答,准你回答得很完美.首先说下Hibernate缓存的作用(即为什么要用缓存机制),然后再 ...

  5. 浏览器 HTTP 协议缓存机制详解--网络缓存决策机制流程图

    1.缓存的分类 2.浏览器缓存机制详解 2.1 HTML Meta标签控制缓存 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 2.2.2 几个重要概念解释 3.用户行为与缓存 4.Ref ...

  6. RecyclerView 缓存机制详解

    一 前言 RecyclerView据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView.GridView.RecyclerView可以用来代替传 ...

  7. MySQL缓存机制详解(一)

    本文章拿来学习用||参考资料:http://www.2cto.com/database/201308/236361.html 对MySql查询缓存及SQL Server过程缓存的理解及总结   一.M ...

  8. IOS缓存机制详解

    资料均来自互联网,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 人魔七七:http://www.cnblogs.com/qiqibo/ 为什么要有缓存 应用需要 ...

  9. 【转】IOS缓存机制详解

    人魔七七:http://www.cnblogs.com/qiqibo/ 为什么要有缓存 应用需要离线工作的主要原因就是改善应用所表现出的性能.将应用内容缓存起来就可以支持离线.我们可以用两种不同的缓存 ...

随机推荐

  1. DVI与VGA有什么区别

    [DVI与VGA有什么区别] DVI接口的传输信号采用全数字格式,与之对应的是采用模拟信号的VGA接口. VGA和DVI的区别,首先VGA模拟信号的传输比较麻烦,首先是将电脑内的数字信号转换为模拟信号 ...

  2. siebel简介

    定义公司架构.描述S应用架构.安装应用.配置S.自动化的业务规则.数据整合.不同环境如何整合. 一.介绍CRM 销售.Callcenter等 允许管理客户和联系人. 二.Using the web c ...

  3. RGB直方图与UV直方图

    ------------------------------------------------------------------------------------ from skimage im ...

  4. OC中数组排序总结

    过完节回来,感觉很多东西都生疏了.总结一下数组的排序.应该不会太完美,后续添加补充. OC中的数组排序方法其实不太多,要根据不同的使用场景来使用不同的方法.Foundation框架中一般用到一下几个方 ...

  5. Oracle-属性查询

    1. 查询表的部分字段属性 select t.*, c.comments from user_tab_columns t, user_col_comments c where t.table_name ...

  6. 利用SHELL脚本修改当前环境变量

    转自http://www.chinaunix.net/old_jh/7/21485.html 1.背景 ---- 在日常的工作中,为了设置一大批环境变量,我们通常编辑了一个shell程序,包含了多个的 ...

  7. Git blame

    一.简介 git blame可以将文件中的每一行的作者.最新的变更提交和提交时间展示出来.   二.实例 http://blog.csdn.net/hudashi/article/details/76 ...

  8. [Cookie] Clear Cookie

    import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport def myCookies = testRunner.testCa ...

  9. JVM致命错误日志(hs_err_pid.log)解读

    JVM致命错误日志(hs_err_pid.log)解读 摘自:https://blog.csdn.net/u013938484/article/details/51811400 2016年07月02日 ...

  10. 拖拽demo--兼容--全局捕获

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...