PHP ob_start()和ob_start('ob_gzhandler')

时间:2012-05-16 09:04:50

标签: php buffer content-encoding

使用ob_start()ob_start('ob_gzhandler')有什么区别? 它如何影响页面速度?

2 个答案:

答案 0 :(得分:13)

这不会影响您可能会想到的页面速度。

ob_gzhandler是一个回调函数,它从输出缓冲区获取内容并在输出之前压缩数据。

这会减少发送到浏览器的内容的大小,这可能会加快向客户端传输内容的速度。但它不会加速您的应用程序/网站。

答案 1 :(得分:6)

我需要强制gzip用于某些管理页面(完整的复杂HTML表格),这些页面没有为某些客户端自动压缩,所以我添加了这个方法。我不确定我是否会强制每个页面,但至少管理员页面很好。

function force_gzip()
{
    // Ensures only forced if the Accept-Encoding header contains "gzip"
    if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
    {
        header('Content-Encoding: gzip');
        ob_start('ob_gzhandler');
    }
}

950Kb的HTML被压缩到大约80KB,导致加载页面的速度提高了5-10倍。