OB缓存全名为:output_buffer,即“输出缓存”;在PHP中要实现页面表太化,它是非常有用的。
开启OB缓存的方式有以下两种两种
1、配置php.ini 文件 output_buffering = 4096(缓存大小为4096个字节)或output_buffering =on
2、直接在程序中 ob_start();
其实一次请求中存在三种缓存,分别是浏览器缓存、程序缓存和OB缓存。我们可以看看下面的代码。
<?php
echo "test1";
header("content-type:text/html;charset=utf-8");
echo "test2";
运行代码,会发现在OB缓存关闭的情况下,它会报错,而开启OB缓存后它就能正常运行。为什么会出现这种情况呢,我们分情况分析。
在OB缓存关闭的情况下:这段代码的执行过程是先将“test1”放在程序缓存中,然后再将“content-type:text/html;charset=utf-8”放到程序缓存中,再将“test2”放到程序缓存中。P 这时的结果为:test1; content-type:text/html;charset=utf-8;test2,最后将结果传到浏览器缓,很显然,这样的结果输出出来是有错误的。
在OB缓存开启的情况下:这段程序的执行过程就变成了这样;先将“test1”放在OB缓存,再将“content-type:text/html;charset=utf-8”放到程序缓存中,再将“test2”放到OB缓存中,程序执行完后,将OB缓存中的内容加入到程序缓存中,而这时的结果为:content-type:text/html;charset=utf-8;test1;test2,最后将结果传到浏览器缓存,这样的结果是正确的。
总结:OB缓存开启时,它会把输出的内容先放到OB缓存中,执行到最后放到程序缓存中,header的内容直接放在程序缓存中。OB缓存未开启,则按顺序把内容放到程序缓存中。
OB缓存常用函数函数简解
ob_start() 开启OB缓存
ob_get_contents(); 得到OB缓存中的内容
ob_clean() 清除OB缓存中的内容
ob_end_clean() 清除OB缓存中的内容并关闭OB缓存
ob_flush() 将OB缓存中的内容刷新(剪切)到程序缓存中
ob_end_flush() 将OB缓存中的内容刷新(剪切)到程序缓存中,并关闭OB缓存
flush() 将程序缓存中的内容刷新(剪切)到浏览器缓存。