【问题标题】:PHP ob_start() and ob_start('ob_gzhandler')PHP ob_start() 和 ob_start('ob_gzhandler')
【发布时间】:2012-05-16 09:04:49
【问题描述】:

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

【问题讨论】:

    标签: php buffer content-encoding


    【解决方案1】:

    这不会像您想象的那样影响页面速度。

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

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

    【讨论】:

    • 如果页面使用 ob_start('ob_gzhandler') 来加快向客户端的内容传输速度,我认为这种缓冲也可以加快页面渲染速度。
    • 这两件事彼此无关。页面渲染取决于客户端硬件。如果渲染内容需要 3 秒,我是否可以在 1 秒内获得内容并不重要。在渲染任何内容之前,您仍然需要获取内容。
    【解决方案2】:

    我需要对一些没有为某些客户端自动压缩的管理页面(充满复杂的 HTML 表)强制 gzip,所以我添加了这个方法。我不确定我会为每个页面强制它,但至少管理页面没问题。

    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 倍。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      相关资源
      最近更新 更多