我有这个最小的代码,可以输出一些文本:
<?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: gzip
,Vary: Accept-Encoding
,Transfer-Encoding: chunked
)。 / p>
我的.htaccess使用AddOutputFilterByType
和Filter
*伪指令,我也分别尝试过:
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的本地工作环境中没有遇到这个问题(很遗憾,我无法升级服务器)。
编辑:对于我来说,问题已解决,请参阅下面的评论。