PHP ob_start()和ob_start('ob_gzhandler')

Sit*_*thu 9 php buffer content-encoding

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

Rep*_*pox 13

从您可能想到的意义上讲,这不会影响页面速度.

所述ob_gzhandler是一个回调函数,其从输出缓冲器需要的内容,并输出它之前压缩该数据.

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

  • 这两件事与彼此无关.页面呈现取决于客户端硬件.如果渲染内容需要3秒钟,我可以在1秒钟内获得内容并不重要.在渲染任何内容之前,您仍然需要获取内容. (2认同)

Nic*_*ord 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');
    }
}
Run Code Online (Sandbox Code Playgroud)

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