HTTP协议 (三) 压缩
?
?
眼见为实, 我们看一个实际的例子, 我发现博客园就使用了gzip压缩。
使用Fiddler可以清楚地看到。??
?
在Fiddler中,每次都要手动去decode. 太麻烦。? 点击工具栏上的"Decode"按钮,就可以自动decode了。
?
?HTTP定义了一些标准的内容编码类型,并允许用扩展的形式添加更多的编码。
Content-Encoding header 就用这些标准化的代号来说明编码时使用的算法
Content-Encoding值
gzip 表明实体采用GNU zip编码
compress 表明实体采用Unix的文件压缩程序
deflate 表明实体是用zlib的格式压缩的
identity 表明没有对实体进行编码。当没有Content-Encoding header时, 就默认为这种情况
gzip, compress, 以及deflate编码都是无损压缩算法,用于减少传输报文的大小,不会导致信息损失。 其中gzip通常效率最高, 使用最为广泛。
?
?http压缩对纯文本可以压缩至原内容的40%, 从而节省了60%的数据传输。
?实例: 博客园首页压缩前是:46124 bytes. 压缩后是:16368bytes.???? 只有原先的35%。? 节省了65%的数据传输,从而大大提高了性能
?有图为证。
?
JPEG这类文件用gzip压缩的不够好。
?
简单来说, Gzip压缩是在一个文本文件中找出类似的字符串, 并临时替换他们,使整个文件变小。这种形式的压缩对Web来说非常适合, 因为HTML和CSS文件通常包含大量的重复的字符串,例如空格,标签。
?
浏览器是不会对Request压缩的。 但是 一些HTTP程序在发送Request时,会对其进行编码。 如下图。
??