gpt4 book ai didi

apache - 让 Apache 自动解压缩文件,但仅在需要时

转载 作者:行者123 更新时间:2023-12-01 10:45:31 24 4
gpt4 key购买 nike

我想在本地压缩我的网络服务器的所有静态文件,并根据请求为它们提供压缩或不压缩。

答案在How can I pre-compress files with mod_deflate in Apache 2.x? , 很接近,因为确实通过启用 MultiViews 并使用正确的 AddEncoding,我可以让 Apache 返回我压缩的 foo.tar.gz当我请求时从我的网络服务器获取文件 foo.tar ,它带有正确的 Content-Encoding:标题。

但这仅在客户端包含 Accept-Encoding: gzip 时才有效。在它发送到服务器的 header 中。 OTOH 如果客户端不支持 gzip 编码,我的服务器只是告诉我没有“可接受”foo.tar为了我。

如果我使用 AddOutputFilter INFLATE tar,我可以让 Apache 在发送之前解压缩该 tarball .但是如果我这样做,那么当我请求 foo.tar.gz 时,服务器也会解压内容。 (或者当我指定我接受 gzip 编码时),我显然不想要。

那么,当客户端不支持 gzip 内容编码时,如何让 Apache 解压缩文件,但在其他情况下为预压缩文件提供服务?

编辑:根据@covener 的建议,我尝试了以下操作:

AddEncoding x-gzip .gz .tgz
RemoveType application/x-gzip .gz .tgz
AddType application/x-tar .tgz

<Location /packages>
FilterDeclare smgunzip CONTENT_SET
FilterProvider smgunzip INFLATE req=Accept-Encoding !$gzip
FilterChain smgunzip
</Location>

[此处使用 Apache-2.2.22。 ] 但结果实际上比前三行更糟糕:当我请求 .tar.gz 文件时,它现在返回没有“内容编码:”,当我请求 .tar 文件时,我收到tar.gz 的内容(即仍然压缩),无论“Accept-Encoding:” header 如何,并且仍然没有“Content-Encoding:”。

最佳答案

(确保你有 AddEncoding gzip 或 x-gzip gz 否则它会坏掉)

2.4:

<Directory /home/covener/SRC/2.4.x/built/htdocs>
Options +MultiViews
MultiviewsMatch Any
FilterDeclare gzip CONTENT_SET
FilterProvider gzip INFLATE "! req('Accept-Encoding') =~ /gzip/"
FilterChain gzip
</Directory>

2.2:
<Directory /home/covener/SRC/2.2.x/built/htdocs>
Options +MultiViews
MultiviewsMatch Any
FilterDeclare gzip CONTENT_SET
FilterProvider gzip INFLATE req=Accept-Encoding !$gzip
FilterChain gzip
</Directory>

关于apache - 让 Apache 自动解压缩文件,但仅在需要时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26895894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com