ob缓存的原理:

    一般来讲,php程序中有两个缓存,一个是程序缓存,另一个是浏览器缓存,这两个是默认存在的。当我们打开ob缓存的时候,就出现了三个缓存了。那当我们打开ob缓存的时候,他们是怎么工作的呢???

    当我们开启ob缓存的时候,程序会把echo输出的内容解析好后放进ob缓存中,当代码执行完毕后,再把ob缓存中的内容刷新到程序缓存中,最后再把程序缓存的内容发送给浏览器缓存,这时候才显示给用户。


";
	header("content-type:text/html;charset=utf-8");
	echo "hello.
"; ob_flush(); echo "aa
"; echo "mingyang
"; echo ob_get_contents(); echo "
"; //****************************************************************** /*ob_start(); echo "abc
"; header("content-type:text/html;charset=utf-8"); echo "hello
"; ob_end_flush(); echo "aa
"; 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
”的时候,它没有再一次把数据写进ob缓存中了,而是直接写进了程序缓存中。最后执行echo ob_get_contents();的时候,ob缓存中没有任何数据,所以最后的输出的结果是:

abc
hello
aa