2012-11-28 192 views

回答

7

这样启用压缩:在php.ini中可以这样做:

zlib.output_compression = On 

,这将意味着每个页面PHP服务将被压缩,这可能是也可能不是你想要的。

但是,使用ob_start('ob_gzhandler')将仅压缩该特定缓冲区/页面,并且不会影响PHP提供的任何其他内容。

如果只想压缩某些输出,请使用第二种方法。混合这两者将毫无意义,并且可能只是使用额外的CPU周期来尝试压缩已经压缩的输出。

这可能是因为PHP足够聪明,只能进行一次压缩,但将这两种方法结合使用仍然是徒劳的。

在你的web服务器上启用压缩通常会更好,虽然这取决于你想要达到的效果。

+1

因此,在php.ini中禁用gzip压缩后,我可以继续使用ob_start('ob_gzhandler');从Php页面。我可以改正吗? – user1844933

2

你不能一起使用两者。

“您不能同时使用ob_gzhandler()和zlib.output_compression。另请注意,使用zlib.output_compression优于ob_gzhandler()。”

http://www.php.net/manual/en/function.ob-gzhandler.php

你仍然可以使用ob_start()如果你需要缓存你的输出,你就不能我们gzhandler回调。

+0

我在php.ini中启用了PHP.ini'gzip compression',可以在ini文件中启用'zlib.output_compression = Yes'吗? – user1844933

+0

如果我记得在apache的情况下gzip压缩与web服务器库mod_gzip协同工作。文档说的是,你不能为zlib压缩显式设置标志,然后使用buffer(ob_ *)函数,因为它不适用。 – Ikstar