对ob缓存的理解
2014-07-16 00:06
134 查看
ob缓存的原理:
一般来讲,php程序中有两个缓存,一个是程序缓存,另一个是浏览器缓存,这两个是默认存在的。当我们打开ob缓存的时候,就出现了三个缓存了。那当我们打开ob缓存的时候,他们是怎么工作的呢???
当我们开启ob缓存的时候,程序会把echo输出的内容解析好后放进ob缓存中,当代码执行完毕后,再把ob缓存中的内容刷新到程序缓存中,最后再把程序缓存的内容发送给浏览器缓存,这时候才显示给用户。
第一段代码:第一步是开启ob缓存,然后会把‘abc’ ‘hello’ 写进ob缓存中,然后执行ob_flush()函数,就会把‘abc’ ‘hello’从ob缓存中刷新到程序缓存中,然后它接着往下执行,继续把‘aa’
'mingyang'又写进了ob缓存中,当代码执行完后,ob缓存中就只有'aa' 'mingyang',所以最后程序缓存把他自己的发送给浏览器的时候,输入的结果是
abc
hello.
aa
mingyang
aa
mingyang
第二段注释的代码:第一步也是开启ob缓存,然后把echo输出的值写进了ob缓存中,头信息写进了程序缓存中,因为执行到ob_end_flush()的时候,把‘abc’ 'hello'刷新到程序缓存中,并且关闭了ob缓存,所以执行到echo “aa<br/>”的时候,它没有再一次把数据写进ob缓存中了,而是直接写进了程序缓存中。最后执行echo ob_get_contents();的时候,ob缓存中没有任何数据,所以最后的输出的结果是:
abc
hello
aa
一般来讲,php程序中有两个缓存,一个是程序缓存,另一个是浏览器缓存,这两个是默认存在的。当我们打开ob缓存的时候,就出现了三个缓存了。那当我们打开ob缓存的时候,他们是怎么工作的呢???
当我们开启ob缓存的时候,程序会把echo输出的内容解析好后放进ob缓存中,当代码执行完毕后,再把ob缓存中的内容刷新到程序缓存中,最后再把程序缓存的内容发送给浏览器缓存,这时候才显示给用户。
<?php ob_start(); echo "abc"."<br/>"; header("content-type:text/html;charset=utf-8"); echo "hello.<br/>"; ob_flush(); echo "aa<br/>"; echo "mingyang<br/>"; echo ob_get_contents(); echo "<hr/>"; //****************************************************************** /*ob_start(); echo "abc<br/>"; header("content-type:text/html;charset=utf-8"); echo "hello<br/>"; ob_end_flush(); echo "aa<br/>"; echo ob_get_contents();*/ ?>对于以上代码:目的是为了加深对ob缓存的理解。
第一段代码:第一步是开启ob缓存,然后会把‘abc’ ‘hello’ 写进ob缓存中,然后执行ob_flush()函数,就会把‘abc’ ‘hello’从ob缓存中刷新到程序缓存中,然后它接着往下执行,继续把‘aa’
'mingyang'又写进了ob缓存中,当代码执行完后,ob缓存中就只有'aa' 'mingyang',所以最后程序缓存把他自己的发送给浏览器的时候,输入的结果是
abc
hello.
aa
mingyang
aa
mingyang
第二段注释的代码:第一步也是开启ob缓存,然后把echo输出的值写进了ob缓存中,头信息写进了程序缓存中,因为执行到ob_end_flush()的时候,把‘abc’ 'hello'刷新到程序缓存中,并且关闭了ob缓存,所以执行到echo “aa<br/>”的时候,它没有再一次把数据写进ob缓存中了,而是直接写进了程序缓存中。最后执行echo ob_get_contents();的时候,ob缓存中没有任何数据,所以最后的输出的结果是:
abc
hello
aa
相关文章推荐
- 理解缓存
- 理解缓存
- Mybatis一二级缓存的理解
- 深入理解ob_flush和flush的区别
- 缓存使用场景的理解
- redis作为缓存的简单理解
- PHP输出缓存ob系列函数详解
- 理解高性能内存缓存对象缓存Memcached原理 (Memcached核心概念,部署)
- 基于字节码指令理解Java中间缓存变量机制
- Android 源码系列之<八>从源码的角度深入理解缓存策略之LruCache
- 【JAVA学习】session 清理缓存的理解 和 如何 清空缓存中的数据
- Android开发笔记——以Volley图片加载、缓存、请求及展示为例理解Volley架构设计
- 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现
- 深入理解ob_flush和flush的区别
- 理解缓存
- 深入理解ob_flush和flush的区别
- 深入理解 Objective-C:方法缓存
- HTML5之appcache语法理解/HTML5应用程序缓存/manifest缓存文件官方用法翻译
- 深入理解PHP Opcode缓存原理
- 【大型软件技术】深入理解与解析Web缓存技术(打造高性能网站)