使用内联PHP代码Gzip网站

时间:2011-08-23 09:07:13

标签: php gzip

根据this article

足以在代码的开头添加它

<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>

我试过,但加载时间增加了5秒以上(+ 100%时间)

这不是推荐的吗?我会以其他方式尝试吗?

3 个答案:

答案 0 :(得分:3)

链接文章中给出的代码示例在某种程度上具有误导性(虽然它没有预先回答您的速度问题)。

ob_gzhandler回调透明地工作,所以只有在浏览器实际支持某种压缩时才会生效(不仅仅是手动检查中的gzip),因此不需要手动检查。相反,你可以写:

ob_start("ob_gzhandler");

哪个是

ob_start();

如果浏览器不支持压缩。或者,您可以设置相应的ini值。请参阅ob_startDocsob_gzhandlerDocs

如果您想测量速度差异,请仅将ob_start()(无压缩)与ob_start("ob_gzhandler")(压缩)进行比较,而不是针对不缓冲进行缓冲。

然后请记住,gzhandler在块上运行,因此只有缓冲了一定数量的数据才能创建输出。这可以使用ini设置进行配置,但不能使用回调功能IIRC进行配置。请参阅zlib.output_compressionDocs

答案 1 :(得分:0)

压缩需要一些时间和资源来自服务器,但传输速度更快。这取决于。

如果您有快速服务器,它应该很快。这取决于

  • 网络连接
  • 服务器资源(例如proccessor)

但是,我认为这不是必要的,我认为如果你的服务器上有gzip压缩插件,它会自动进行gziping。

在没有您的代码的情况下尝试this测试,然后使用

答案 2 :(得分:0)

只需使用以下代码即可。

<?php 
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
ob_start("ob_gzhandler");
} else{
 ob_start(); 
?>