Apache:压缩为 zip(不是 gzip)

Apache:压缩为 zip(不是 gzip)

我已配置apache 2.4为在将内容传送到客户端之前对其进行压缩,使用mod_deflate并将客户端标头设置为"Accept-Encoding: gzip"。因此,我已经开始工作,生成了一个有效的 gzip 文件:

curl --header "Accept-Encoding: gzip" https://my.website/ > content.gz

有没有办法可以"Accept-Encoding: zip"压缩zip

据我了解文档,这似乎是不可能的:

gzip 编码是唯一受支持的编码,以确保与旧浏览器实现完全兼容。deflate 编码不受支持... (https://httpd.apache.org/docs/2.4/mod/mod_deflate.html

问题来自Windows无法解压缩gzip文件的用户(我猜只使用 Windows 原生工具)。

[编辑:正如 gerald-schneider 所说,浏览器会自动解压内容 - 但我们正在使用此类命令行工具来编写 API 脚本,因此无需浏览器参与。也感谢所有其他答案和评论,我认为我应该更精确,即首先curl写下命令]。curl

答案1

我认为你误解了 HTTP 协议中的压缩的用途。它不是为了下载档案。它是为了减少浏览时传输的数据。它压缩的文件是 HTML、CSS、JavaScript 和图像。浏览器在显示页面之前会处理解压缩。浏览器在 Windows 上可以很好地处理 gzip。

答案2

正如问题引用的 apache 文档所指出的那样不是可以将 apache 配置为提供压缩内容,并将zip客户mod_deflate端的标头设置为Accept-Encoding: zip。仅gzip有效。如果用户使用浏览器浏览器会即时解码。如果用户下载例如,curl她必须对gzip内容进行 gunzip 压缩,可以使用操作系统原生工具或已安装的工具(对于 Windows 用户而言,后者是必需的)。

答案3

读了你的评论,我有点不确定你在问什么:

  • 您是否希望您的 apache 服务器发送使用 Zip 编码而不是 Gzip 编码的普通文件(例如 html 或纯文本)?(根据文档,这是不可能的)
  • 您是否希望 curl 能够从您的服务器获取数据?(在这种情况下,您不需要担心编码,因为这只是一个“小”网络优化)
  • 您想让 curl 下载一些 zip 内容吗?在这种情况下,您应该配置 httpd,以便它使用一些“静态文件”设置直接提供您的 zip 存档

无论如何,我不确定内容编码是否是您在这里寻找的......

相关内容