Gzip 是由 GNU 项目开发的开放压缩格式。与大多数无损压缩算法一样,它通过用较短的字符串替换最常见的字符串来减小文件大小。具体来说,gzip 和 deflate 格式基于Abraham L empel 和 Jacob Z iv在 1977 年创建的LZ77算法,该算法创建一个字典,其中包含文件中最常重复的字符串,这些字符串在文件中被Huffman 代码替换,这些代码是唯一可解码的二进制序列(它们可以在没有分隔符的情况下读取)并且对于最常见的字符串来说更短。
为什么它如此重要?
这种WPO 技术是最容易应用的技术之一,因为它不需要修改代码,而另一方面它获得了显着的性能改进,因为它大大减少了每个客户端必须下载才能查看页面的信息量。如果我们 目标电话号码或电话营销数据 使用 Data URI在样式表或 HTML 代码中嵌入图像
,那么它的使用尤其重要,因为当将图像转换为文本时,它们的大小会增加,并且通过 gzip 压缩,它们会再次保持原样。
它是如何运作的?
要使用它,客户端和服务器都必须支持 gzip 压缩。浏览器(所有不超过 10 年的浏览器)在其 HTTP/1.1 协议请求的标头中发送以下参数:
得到 /
主办方:
接受编码:gzip、deflate
通过这个 header,客户端告诉服务器:给我 页,你可以使用 gzip 或 deflate 算法将其压缩发送给我。
服务器在看到此请求后,可以以压缩或未压缩的内容进行响应。如果以压缩形式返回,则会在响应头中包含以下参数:
通过此参数,服务器告诉客户端:我正在向您发送使用 gzip 压缩的页面。这样客户端就知道它必须应用所述算法来解压缩它。当标头没有出现时,表示内容未压缩。
通常,压缩内容总是以 gzip 形式出现。另一种替代压缩 最适合小型企业的用户友好型电子邮件平台 算法是 deflate,但从未使用过,因为它的压缩量较小,并且解压缩 deflate 的浏览器也会解压缩 gzip,但反之则不然,因为 gzip 基于 deflate。
Google Chrome在 Accept-Encoding 中发送一种 Google 专有的压缩格式, SDCH(HTTP 上的共享字典压缩),但是仍然没有以这种格式压缩的 Web 服务器,而且似乎也没有任何兴 bw 列表 趣存在这种格式,因为几年前就已经提出了。
服务器除了前一个参数外还应包含以下参数:
变化:接受编码
该参数针对中间代理服务器,用于解决以下情况:假设无法使用gzip的浏览器发出第一个请求,并且页面未压缩地存储在代理缓存中,则尽管浏览器询问,以下响应都将是未压缩的对于 gzip 中的它。如果第一个请求来自可以使用它的浏览器,则以下响应将全部被压缩,即使浏览器无法解压缩它们并将它们显示给用户。通过这个参数,我们告诉代理当浏览器请求中 Accept-Encoding 参数的值发生变化时,它应该在缓存中存储不同的版本,从而解决问题。