我已配置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 存档
无论如何,我不确定内容编码是否是您在这里寻找的......