设置Content-Length时,Apache输出压缩不起作用

时间:2018-11-15 07:35:20

标签: php apache .htaccess http-headers http-compression

我有这个最小的代码,可以输出一些文本:

<?php

$output = "";

for ($i = 0; $i < 7000; $i++) {
    $output .= ($i % 2) ? "Foo " : "Bar ";
}

header("Content-Length: ".strlen($output));
echo $output;

exit;

在我的Web服务器上使用Apache 2.2.34,并且无法通过.htaccess压缩输出(见下文)。

但是,如果我简单地删除此header("Content-Length…行,突然输出将按预期方式压缩并发送了适当的标头(Content-Encoding: gzipVary: Accept-EncodingTransfer-Encoding: chunked)。 / p>

我的.htaccess使用AddOutputFilterByTypeFilter *伪指令,我也分别尝试过:

AddOutputFilterByType DEFLATE "text/html"

<IfModule filter_module>
   FilterDeclare   COMPRESS
   FilterProvider  COMPRESS  DEFLATE Content-Type $text/html
   FilterProvider  COMPRESS  DEFLATE resp=Content-Type /text/(css|javascript|plain|xml|x-component)/
   FilterProvider  COMPRESS  DEFLATE resp=Content-Type /application/(javascript|json|xml|x-javascript)/
   FilterChain     COMPRESS
   FilterProtocol  COMPRESS  change=yes;byteranges=no
</IfModule>

我在使用Apache 2.4的本地工作环境中没有遇到这个问题(很遗憾,我无法升级服务器)。

编辑:对于我来说,问题已解决,请参阅下面的评论。

0 个答案:

没有答案