足以在代码的开头添加它
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>
我试过,但加载时间增加了5秒以上(+ 100%时间)
这不是推荐的吗?我会以其他方式尝试吗?
答案 0 :(得分:3)
链接文章中给出的代码示例在某种程度上具有误导性(虽然它没有预先回答您的速度问题)。
ob_gzhandler
回调透明地工作,所以只有在浏览器实际支持某种压缩时才会生效(不仅仅是手动检查中的gzip
),因此不需要手动检查。相反,你可以写:
ob_start("ob_gzhandler");
哪个是
ob_start();
如果浏览器不支持压缩。或者,您可以设置相应的ini值。请参阅ob_start
Docs和ob_gzhandler
Docs。
如果您想测量速度差异,请仅将ob_start()
(无压缩)与ob_start("ob_gzhandler")
(压缩)进行比较,而不是针对不缓冲进行缓冲。
然后请记住,gzhandler在块上运行,因此只有缓冲了一定数量的数据才能创建输出。这可以使用ini设置进行配置,但不能使用回调功能IIRC进行配置。请参阅zlib.output_compression
Docs。
答案 1 :(得分:0)
压缩需要一些时间和资源来自服务器,但传输速度更快。这取决于。
如果您有快速服务器,它应该很快。这取决于
但是,我认为这不是必要的,我认为如果你的服务器上有gzip压缩插件,它会自动进行gziping。
在没有您的代码的情况下尝试this测试,然后使用
答案 2 :(得分:0)
只需使用以下代码即可。
<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
ob_start("ob_gzhandler");
} else{
ob_start();
?>