HTTP协议详解——压缩问题

来源:互联网 发布:势不可挡网络剧预告片 编辑:程序博客网 时间:2024/05/17 04:30
1、HTTP内容编码和HTTP压缩的区别:

HTTP压缩,在HTTP协议中,其实是内容编码的一种。
在http协议中,可以对内容(也就是body部分)进行编码, 可以采用gzip这样的编码。 从而达到压缩的目的。 也可以使用其他的编码把内容搅乱或加密,以此来防止未授权的第三方看到文档的内容。

所以我们说HTTP压缩,其实就是HTTP内容编码的一种。 所以大家不要把HTTP压缩和HTTP内容编码两个概念混淆了。

2、HTTP压缩的过程:
1. 浏览器发送Http request 给Web服务器, request 中有Accept-Encoding: gzip, deflate。 (告诉服务器, 浏览器支持gzip压缩)
2. Web服务器接到request后, 生成原始的Response, 其中有原始的Content-Type和Content-Length。
3. Web服务器通过Gzip,来对Response进行编码, 编码后header中有Content-Type和Content-Length(压缩后的大小), 并且增加了Content-Encoding:gzip. 然后把Response发送给浏览器。
4. 浏览器接到Response后,根据Content-Encoding:gzip来对Response 进行解码。 获取到原始response后, 然后显示出网页。


3、内容编码类型

HTTP定义了一些标准的内容编码类型,并允许用扩展的形式添加更多的编码。
Content-Encoding header 就用这些标准化的代号来说明编码时使用的算法
Content-Encoding值
gzip  表明实体采用GNU zip编码
compress 表明实体采用Unix的文件压缩程序
deflate  表明实体是用zlib的格式压缩的
identity  表明没有对实体进行编码。当没有Content-Encoding header时, 就默认为这种情况
gzip, compress, 以及deflate编码都是无损压缩算法,用于减少传输报文的大小,不会导致信息损失。 其中gzip通常效率最高, 使用最为广泛。


4、压缩的好处、不足:

1)http压缩对纯文本可以压缩至原内容的40%, 从而节省了60%的数据传输。

2)JPEG这类文件用gzip压缩的不够好。

3)简单来说, Gzip压缩是在一个文本文件中找出类似的字符串, 并临时替换他们,使整个文件变小。这种形式的压缩对Web来说非常适合, 因为HTML和CSS文件通常包含大量的重复的字符串,例如空格,标签。


5、HTTP Response能压缩,HTTP Request也是可以压缩的:
浏览器是不会对Request压缩的。 但是 一些HTTP程序在发送Request时,会对其进行编码。这种情况下,客户端和服务端都需要手动开发一些压缩和解压代码


原创粉丝点击