本文转自:
http://www.cnblogs.com/TankXiao/archive/2012/11/13/2749055.html
HTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件。 能大大减少网络传输的数据量,提高了用户显示网页的速度。当然,同时会增加一点点服务器的开销。 本文从HTTP协议的角度,来理解HTTP压缩这个概念。
HTTP内容编码和HTTP压缩的区别
HTTP压缩,在HTTP协议中,其实是内容编码的一种。
在http协议中,可以对内容(也就是body部分)进行编码, 可以采用gzip这样的编码。 从而达到压缩的目的。 也可以使用其他的编码把内容搅乱或加密,以此来防止未授权的第三方看到文档的内容。
所以我们说HTTP压缩,其实就是HTTP内容编码的一种。 所以大家不要把HTTP压缩和HTTP内容编码两个概念混淆了。
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后, 然后显示出网页。
如下图:
实例:Fiddler观察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%的数据传输,从而大大提高了性能
有图为证。
Gzip的缺点
JPEG这类文件用gzip压缩的不够好。
Gzip是如何压缩的
简单来说, Gzip压缩是在一个文本文件中找出类似的字符串, 并临时替换他们,使整个文件变小。这种形式的压缩对Web来说非常适合, 因为HTML和CSS文件通常包含大量的重复的字符串,例如空格,标签。
HTTP Response能压缩,HTTP Request也是可以压缩的
浏览器是不会对Request压缩的。 但是 一些HTTP程序在发送Request时,会对其进行编码。 如下图。
分享到:
相关推荐
**TCP/IP协议详解卷三**聚焦于网络应用层的一些关键协议,包括TCP事务协议、HTTP、NNTP和UNIX域协议。这些协议在互联网通信中扮演着至关重要的角色,理解它们的工作原理对于网络开发者和系统管理员至关重要。 **TCP...
4. **HTTP与HTTPS**:HTTP(超文本传输协议)是应用层协议,用于传输Web内容。HTTPS(安全超文本传输协议)在HTTP基础上添加了SSL/TLS层,以加密通信,确保数据传输的安全性。 5. **DNS协议**:域名系统(DNS)协议...
#### 三、ITU-T V.44压缩协议的应用场景 1. **远程文件传输**:在远程文件传输过程中,使用V.44可以有效减少传输时间,提高传输效率。 2. **视频会议**:在视频会议应用中,V.44能够帮助降低带宽需求,提高音视频...
《TCP/IP详解卷三:TCP事务协议》是TCP/IP协议族深入学习的重要参考资料,它主要聚焦于四个关键的网络通信协议:TCP事务协议(T/TCP)、HTTP、NNTP和UNIX域协议。以下是对这些协议的详细阐述: 1. TCP事务协议(T/...
《TCP/IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议》是一本深入探讨网络通信协议的专业书籍,涵盖了TCP事务协议、HTTP、NNTP以及UNIX域协议等多个核心主题。以下是对这些知识点的详细解析: 1. TCP事务协议...
网络游戏中的网络协议报头压缩方法是优化网络游戏性能的关键技术之一。在网络游戏的实时通信中,数据传输效率至关重要,因为延迟和带宽限制可能直接影响玩家的游戏体验。报头压缩旨在减少在网络上传输的数据量,从而...
3. 头部字段:HTTP请求和响应中包含各种头部字段,如Accept表示客户端接受的媒体类型,Content-Type定义数据的类型,Cookie和Set-Cookie用于管理会话。 4. 状态码:三位数字的状态码,如200表示成功,404表示未找到...
- HTTPS:HTTP与SSL/TLS的结合,提供了数据加密、服务器身份验证、消息完整性检查,确保通信安全。 7. **首部字段**: - 常见的有Content-Type定义数据类型,Authorization进行身份验证,Cookie和Set-Cookie管理...
《TCP/IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议》是一本深入解析网络通信协议的专业书籍,涵盖了TCP/IP协议族中的关键组件。以下是对这些协议的详细阐述: TCP(传输控制协议)是互联网协议栈中最核心的...
4. **HTTP(超文本传输协议)**:HTTP是应用层协议,主要用于web浏览器和服务器之间的数据交换。HTTP规定了客户端如何向服务器请求资源,以及服务器如何响应这些请求。HTTP/1.x和HTTP/2在性能上有显著差异,后者引入...
Xpress 压缩算法具有三种变体,均专为提高速度而设计。最快的变体 Plain LZ77 实现了 LZ77 算法 ( UASDC )。较慢的变体 LZ77+Huffman 在 LZ77 数据上添加了 Huffman 编码通道。第三个变体 LZNT1 实现了 LZ77,没有第...
3. **HTTP/2**: 引入了二进制分帧、多路复用、头部压缩等特性,显著减少了延迟,提升了性能。 4. **HTTP/3**: 基于QUIC协议,解决了TCP的延迟问题,进一步优化了网络性能。 ### HTTPS与安全 HTTPS是HTTP的安全版本...
《TCP/IP详解卷三:TCP事务协议HTTPNNTP和UNIX域协议》这本书深入探讨了互联网通信中的关键协议,包括TCP事务协议、HTTP、NNTP以及UNIX域协议。这些协议是构建现代网络应用的基础,理解它们的工作原理对于网络开发...
- 版本与特性:HTTP/1.0、HTTP/1.1和HTTP/2的区别,比如HTTP/2引入的多路复用、头部压缩等性能优化。 - 安全性:HTTPS(HTTP over SSL/TLS)的使用,以及证书、加密、身份验证等网络安全方面的内容。 - 错误处理:...
HTTP协议的版本发展至今,从最初的HTTP/1.0到如今的HTTP/2和HTTP/3,其性能和效率不断优化,支持了更多特性如多路复用、压缩、加密等。 NNTP(网络新闻传输协议)主要用于新闻组的通信,允许用户在不同的新闻服务器...
卷三:TCP事务协议,HTTP,NNTP和UNIX域协议》是网络通信领域的经典之作,深入解析了互联网中四个重要的协议:TCP事务协议、HTTP、NNTP和UNIX域协议。这些协议在现代互联网应用中起着至关重要的作用。 TCP(传输...
#### iPad 协议三:扩展功能 - **功能概述**:涵盖了一些高级或特定场景下的功能支持。 - **技术细节**: - 小程序支持:允许用户在iPad上运行各种微信小程序。 - 文件传输助手:方便用户在不同设备间传输文件。 ...