之前写过一个篇 【HTTP协议详解】 ,这次继续介绍HTTP协议中的压缩。
本文会使用Fiddler来查看HTTP request和Response, 如果不熟悉这个工具,可以先参考[Fiddler教程]
HTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件。 能大大减少网络传输的数据量,提高了用户显示网页的速度。当然,同时会增加一点点服务器的开销。 本文从HTTP协议的角度,来理解HTTP压缩这个概念。
阅读目录
- HTTP内容编码和HTTP压缩的区别
- HTTP压缩的过程
- 实例:用Fiddler观察HTTP压缩
- 内容编码类型
- 压缩的好处
- gzip的缺点
- gzip是如何压缩的
- HTTP Response能压缩,HTTP Request也是可以压缩的
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时,会对其进行编码。 如下图。
附: HTTP协议 系列教程, (连载中, 敬请期待)
相关推荐
QUIC(Quick UDP Internet Connections)是Google开发的一种基于UDP的低延迟网络协议,它集成了HTTP/2的一些特性,包括头部压缩。QUIC使用QPACK(QUIC Packet Compression)作为其头部压缩机制,类似于HPACK,但...
#### 三、ITU-T V.44压缩协议的应用场景 1. **远程文件传输**:在远程文件传输过程中,使用V.44可以有效减少传输时间,提高传输效率。 2. **视频会议**:在视频会议应用中,V.44能够帮助降低带宽需求,提高音视频...
Xpress 压缩算法具有三种变体,均专为提高速度而设计。最快的变体 Plain LZ77 实现了 LZ77 算法 ( UASDC )。较慢的变体 LZ77+Huffman 在 LZ77 数据上添加了 Huffman 编码通道。第三个变体 LZNT1 实现了 LZ77,没有第...
HTTP/2引入了多路复用、二进制分帧和头部压缩等优化,显著提高了性能。HTTP/3则进一步采用了QUIC协议,解决了TCP的一些延迟问题,提高了网络传输效率。 安全性方面,HTTPS(HTTP over TLS/SSL)提供了加密通信和...
3. **HTTP/2**: 引入了二进制分帧、多路复用、头部压缩等特性,显著减少了延迟,提升了性能。 4. **HTTP/3**: 基于QUIC协议,解决了TCP的延迟问题,进一步优化了网络性能。 ### HTTPS与安全 HTTPS是HTTP的安全版本...
HTTP/2引入了多路复用、二进制分帧、头部压缩等优化,解决了HTTP/1.1的性能瓶颈,降低了延迟,提高了数据传输效率。 七、HTTPS HTTPS是HTTP的安全版本,通过SSL/TLS协议提供加密通信和服务器身份验证,保证了数据...
- HTTP/2:通过二进制分帧、多路复用、头部压缩等优化提升了性能。 - HTTP/3:基于QUIC协议,解决了TCP的一些性能问题,降低了延迟。 5. **缓存机制**: - HTTP允许客户端缓存响应,通过Cache-Control、ETag、...
此外,HTTP/1.1与HTTP/2在性能上有显著差异,HTTP/2引入了多路复用、头部压缩、服务器推送等特性,大大提高了网页加载速度。而最新的HTTP/3则基于QUIC协议,解决了TCP的延迟问题,提高了网络连接的效率。 学习HTTP...
**TCP/IP协议详解卷三**聚焦于网络应用层的一些关键协议,包括TCP事务协议、HTTP、NNTP和UNIX域协议。这些协议在互联网通信中扮演着至关重要的角色,理解它们的工作原理对于网络开发者和系统管理员至关重要。 **TCP...
HTTP协议的请求由三部分组成:起始行、请求头和请求体。起始行包含了请求方法(如GET、POST等)和资源URI;请求头包含了一些附加信息,如用户代理、接受的编码格式、Cookie等;请求体则通常用于POST请求,用来传递...
**HTTP请求**由三部分组成:请求行、消息报头和请求正文。请求行包含方法(GET、POST等)、请求URI和HTTP版本。消息报头包含额外的信息,如Accept(接受的媒体类型)、Host(指定服务器地址)、Content-Length(请求...
### HTTP协议基础知识详解 #### 一、HTTP协议概述 HTTP(HyperText Transfer Protocol),即超文本传输协议,是一种用于从WWW服务器传输超文本到本地浏览器的传输协议。它被设计来传输网页数据,并且它是互联网上...
4. **分组数据汇聚协议(PDCP)**:位于无线链接控制(RLC)层之上,PDCP负责在不同的网络层之间提供数据包的透明传输,并进行头压缩以减少无线链路上的数据传输量。 5. **会话控制**:这部分协议包括呼叫建立、...
5. **编码处理**:HTTP协议允许对传输的数据进行编码,如gzip压缩。解析代码需要能够识别并解码这些编码。 6. **分块传输**:在HTTP 1.1中,大文件可以通过分块传输来提高效率。解析代码应能处理接收到的数据块,并...
**三、语音录制** 在Android中,使用`MediaRecorder`类可以方便地进行音频录制。设置好输出文件路径、音频源、音频编码格式等参数,例如: ```java MediaRecorder recorder = new MediaRecorder(); recorder....
HTTP/2和HTTP/3进一步提升了性能,通过二进制分帧、多路复用、头部压缩等技术减少了延迟和提高了数据传输效率。HTTP/3引入了QUIC协议,旨在解决TCP的一些性能问题,如快速连接建立和减少网络拥塞。 文件列表中的`...
在本节讲解中,我们将深入探讨Java Web开发中的核心元素之一——HTTP协议。...接下来,你可以结合"传智播客_张孝祥_JAVA课堂_HTTP协议详解第三讲、说明.html"这份资料进行深入学习,进一步巩固这些知识点。
压缩传输方法通常包括预处理、编码和解码三个步骤。预处理阶段,游戏服务器会将待发送的数据进行整理,去除冗余信息,例如重复的游戏状态或者不重要的视觉细节。编码阶段,使用高效的压缩算法,如LZ77、LZSS、...
- HTTP/2:改进了HTTP/1.1,引入了二进制分帧、多路复用、头部压缩等特性,显著提高了性能。 HTTP协议是Web服务的核心,理解和掌握其工作原理对于开发Web应用至关重要。通过深入学习,开发者能更好地优化性能,解决...