php中输出缓冲测试
在看phpcms的源码,发现有这样一行:ob_start('ob_gzhandler');
,虽然我知道这个是输出缓存,压缩页面,提高加载速度等等啥的作用,但是具体压缩到多少呢?
于是我做了一个实验,创建了一个php文件,代码如下:
for($i = 1; $i <= 200000; $i++) {
echo '硬汉工作室<br />';
}
chrome访问,打开开发者工具,切换到Network标签,显示文件大小是22.6kb,这应该是没有经过任何压缩的。
现在我加上输出缓存
ob_start('ob_gzhandler');
for($i = 1; $i <= 200000; $i++) {
echo '硬汉工作室<br />';
}
现在访问,显示文件大小是10.4kb,粗略算,压缩率50%+,如果网页内容比较多的话,效果应该还比较明显。
那么, ob_gzhandler是啥呢?,这个应该是一个压缩算法函数,gz格式的压缩?
ob 是output buffer的简写,buffer是啥?缓冲,而不是缓存,ob_start()是打开缓冲区,所以默认情况下,打开缓冲区不会有浏览任何速度的提升,必须配合相应的压缩函数。
几个常用的ob函数:
ob_get_contents() 获取缓冲区内容,但是不清空缓冲区;
ob_get_clean() 获取缓冲区内容,同时清空缓冲区;