我不明白这个功能。我阅读了PHP手册但没有得到它。我正在关注一个登录教程,他们在session_start()
之前的脚本开头使用了这个函数。什么是内部缓冲区?
答案 0 :(得分:3)
它将所有输出存储在缓冲区中,直到刷新为止(例如ob_flush())。
它有很多用途。
示例1:如果要为需要查找数据的页面生成HTML,则可以刷新已生成的HTML,然后进行查找。这样,在您进行数据检索时,页面的HTTP传输就开始了。然后,您继续输出页面的其余部分。通常,在<body>
标记之后进行刷新的好地方。浏览器会更快地获得第一个字节,如果<head>
中包含所有CSS,则浏览器可以构建CSSOM。理想情况下,执行数据检索所需的时间少于将HTML传输到浏览器。这样,数据检索时间对页面加载速度没有影响。
示例2:
如果要编辑图像。输出图像,缓冲区成为图像原始数据。
$image = ob_get_contents();
进行编辑。清空输出缓冲区(ob_clean())
,然后用更多HTML输出编辑后的图像
示例3:
可以使用回调函数调用ob_start。
当刷新缓冲区时,ob_start调用回调函数,并且函数可以处理输出缓冲区的内容。
ob_start("ob_gzhandler");
ob_gzhandler将gzip输出。当您的服务器未配置为压缩输出时,这尤其方便。某些服务器配置为压缩文件扩展名而不是内容类型。或者,如果服务器未配置为压缩特定MIME内容类型。
如果服务器没有压缩JSON(application / json),你可以使用ob_start(“ob_gzhandler”);
ob_start("ob_gzhandler");
header('Content-Type:application/json; charset=utf-8');
<强> ob_start( 'ob_tidyhandler'); 强>
ob_start( 'ob_tidyhandler');将整理你的输出。它会添加缺少的Doctype,<head>
关闭标记,等等。