假设服务器设置正确,现代浏览器能够在下载 .gzip 文件时自动解压。对于 .tar.gz 文件也是如此吗?
例如,假设您有一个包含大量资产的 HTML5 游戏。将资产(游戏模型、声音等)压缩为单个 .tar 文件,然后(我假设)将其再次压缩为 .gzip 文件是有意义的。在客户端需要做什么特殊的事情来解压它们吗?或者有没有更好的方法来在服务器上压缩资产,使我的问题变得毫无意义?
答案1
简短的回答是,浏览器不支持。
大多数网络服务器可以透明地gzip
将数据发送到您的浏览器以节省传输时间,但这gzip
只是一种压缩算法。tar
另一方面,是一种用于批处理的格式文件合并到一个档案库中。
更长的答案是,这是两个不同的 HTTP 标头之间的相互作用:Content-Encoding
和Content-Type
。
当您访问使用 的网页时gzip
,您会收到Content-Type
带有text/html
的Content-Encoding
。gzip
浏览器知道如何处理text/html
,因此它会透明地解压缩响应并将其呈现在您的屏幕上。
当您下载.gz
或tar
文件时,您会收到带有Content-Type
(application/x-gzip
或x-tar
或x-tar-gz
)的内容,这会提示浏览器将数据视为文件下载,而不是尝试自行对其执行任何操作。
没有所谓的Content-Encoding
of tar
,因为这个标题仅用于宣传某种压缩类型- 因此将.tar.gz
经过编码的文件发送到浏览器gzip
是毫无意义且浪费的。数据已经被压缩了。