现代浏览器如何压缩 .tar.gz 文件?

现代浏览器如何压缩 .tar.gz 文件?

假设服务器设置正确,现代浏览器能够在下载 .gzip 文件时自动解压。对于 .tar.gz 文件也是如此吗?

例如,假设您有一个包含大量资产的 HTML5 游戏。将资产(游戏模型、声音等)压缩为单个 .tar 文件,然后(我假设)将其再次压缩为 .gzip 文件是有意义的。在客户端需要做什么特殊的事情来解压它们吗?或者有没有更好的方法来在服务器上压缩资产,使我的问题变得毫无意义?

答案1

简短的回答是,浏览器不支持。

大多数网络服务器可以透明地gzip将数据发送到您的浏览器以节省传输时间,但这gzip只是一种压缩算法。tar另一方面,是一种用于批处理的格式文件合并到一个档案库中。

更长的答案是,这是两个不同的 HTTP 标头之间的相互作用:Content-EncodingContent-Type

当您访问使用 的网页时gzip,您会收到Content-Type带有text/htmlContent-Encodinggzip浏览器知道如何处理text/html,因此它会透明地解压缩响应并将其呈现在您的屏幕上。

当您下载.gztar 文件时,您会收到带有Content-Typeapplication/x-gzipx-tarx-tar-gz)的内容,这会提示浏览器将数据视为文件下载,而不是尝试自行对其执行任何操作。

没有所谓的Content-Encodingof tar,因为这个标题仅用于宣传某种压缩类型- 因此将.tar.gz经过编码的文件发送到浏览器gzip是毫无意义且浪费的。数据已经被压缩了。

相关内容