`
yuzhi2217
  • 浏览: 36619 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HTTP协议 (三) 压缩

    博客分类:
  • HTTP
 
阅读更多

之前写过一个篇 【HTTP协议详解】 ,这次继续介绍HTTP协议中的压缩。

本文会使用Fiddler来查看HTTP request和Response, 如果不熟悉这个工具,可以先参考[Fiddler教程]

HTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件。 能大大减少网络传输的数据量,提高了用户显示网页的速度。当然,同时会增加一点点服务器的开销。 本文从HTTP协议的角度,来理解HTTP压缩这个概念。

 
阅读目录

  1. HTTP内容编码和HTTP压缩的区别
  2. HTTP压缩的过程
  3. 实例:用Fiddler观察HTTP压缩
  4. 内容编码类型
  5. 压缩的好处
  6. gzip的缺点
  7. gzip是如何压缩的
  8. 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时,会对其进行编码。 如下图。

 

分享到:
评论

相关推荐

    网络游戏-用于网络协议的报头压缩方法.zip

    QUIC(Quick UDP Internet Connections)是Google开发的一种基于UDP的低延迟网络协议,它集成了HTTP/2的一些特性,包括头部压缩。QUIC使用QPACK(QUIC Packet Compression)作为其头部压缩机制,类似于HPACK,但...

    ITU-T V.44 压缩协议

    #### 三、ITU-T V.44压缩协议的应用场景 1. **远程文件传输**:在远程文件传输过程中,使用V.44可以有效减少传输时间,提高传输效率。 2. **视频会议**:在视频会议应用中,V.44能够帮助降低带宽需求,提高音视频...

    Xpress 压缩算法_rust_代码_下载

    Xpress 压缩算法具有三种变体,均专为提高速度而设计。最快的变体 Plain LZ77 实现了 LZ77 算法 ( UASDC )。较慢的变体 LZ77+Huffman 在 LZ77 数据上添加了 Huffman 编码通道。第三个变体 LZNT1 实现了 LZ77,没有第...

    HTTP协议详解_HTTP协议_

    HTTP/2引入了多路复用、二进制分帧和头部压缩等优化,显著提高了性能。HTTP/3则进一步采用了QUIC协议,解决了TCP的一些延迟问题,提高了网络传输效率。 安全性方面,HTTPS(HTTP over TLS/SSL)提供了加密通信和...

    HTTP协议.zip_HTTP_HTTP协议

    3. **HTTP/2**: 引入了二进制分帧、多路复用、头部压缩等特性,显著减少了延迟,提升了性能。 4. **HTTP/3**: 基于QUIC协议,解决了TCP的延迟问题,进一步优化了网络性能。 ### HTTPS与安全 HTTPS是HTTP的安全版本...

    张孝祥_HTTP协议详解

    HTTP/2引入了多路复用、二进制分帧、头部压缩等优化,解决了HTTP/1.1的性能瓶颈,降低了延迟,提高了数据传输效率。 七、HTTPS HTTPS是HTTP的安全版本,通过SSL/TLS协议提供加密通信和服务器身份验证,保证了数据...

    面试中的HTTP协议

    - HTTP/2:通过二进制分帧、多路复用、头部压缩等优化提升了性能。 - HTTP/3:基于QUIC协议,解决了TCP的一些性能问题,降低了延迟。 5. **缓存机制**: - HTTP允许客户端缓存响应,通过Cache-Control、ETag、...

    http协议的相关介绍

    此外,HTTP/1.1与HTTP/2在性能上有显著差异,HTTP/2引入了多路复用、头部压缩、服务器推送等特性,大大提高了网页加载速度。而最新的HTTP/3则基于QUIC协议,解决了TCP的延迟问题,提高了网络连接的效率。 学习HTTP...

    TCPIP协议详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    **TCP/IP协议详解卷三**聚焦于网络应用层的一些关键协议,包括TCP事务协议、HTTP、NNTP和UNIX域协议。这些协议在互联网通信中扮演着至关重要的角色,理解它们的工作原理对于网络开发者和系统管理员至关重要。 **TCP...

    HTTP.zip_C http协议_HTTP协议_c语言 http_c语言 http_c语言http协议

    HTTP协议的请求由三部分组成:起始行、请求头和请求体。起始行包含了请求方法(如GET、POST等)和资源URI;请求头包含了一些附加信息,如用户代理、接受的编码格式、Cookie等;请求体则通常用于POST请求,用来传递...

    Http协议原理详解

    **HTTP请求**由三部分组成:请求行、消息报头和请求正文。请求行包含方法(GET、POST等)、请求URI和HTTP版本。消息报头包含额外的信息,如Accept(接受的媒体类型)、Host(指定服务器地址)、Content-Length(请求...

    http协议基础.doc

    ### HTTP协议基础知识详解 #### 一、HTTP协议概述 HTTP(HyperText Transfer Protocol),即超文本传输协议,是一种用于从WWW服务器传输超文本到本地浏览器的传输协议。它被设计来传输网页数据,并且它是互联网上...

    CDMA2000层三协议带目录

    4. **分组数据汇聚协议(PDCP)**:位于无线链接控制(RLC)层之上,PDCP负责在不同的网络层之间提供数据包的透明传输,并进行头压缩以减少无线链路上的数据传输量。 5. **会话控制**:这部分协议包括呼叫建立、...

    http 协议分析代码实例

    5. **编码处理**:HTTP协议允许对传输的数据进行编码,如gzip压缩。解析代码需要能够识别并解码这些编码。 6. **分块传输**:在HTTP 1.1中,大文件可以通过分块传输来提高效率。解析代码应能处理接收到的数据块,并...

    android Speex语音压缩(协议压缩,编码部分)【1】

    **三、语音录制** 在Android中,使用`MediaRecorder`类可以方便地进行音频录制。设置好输出文件路径、音频源、音频编码格式等参数,例如: ```java MediaRecorder recorder = new MediaRecorder(); recorder....

    HttpCommunications_HTTP通讯协议解析_

    HTTP/2和HTTP/3进一步提升了性能,通过二进制分帧、多路复用、头部压缩等技术减少了延迟和提高了数据传输效率。HTTP/3引入了QUIC协议,旨在解决TCP的一些性能问题,如快速连接建立和减少网络拥塞。 文件列表中的`...

    Java Web_HTTP协议详解第三讲

    在本节讲解中,我们将深入探讨Java Web开发中的核心元素之一——HTTP协议。...接下来,你可以结合"传智播客_张孝祥_JAVA课堂_HTTP协议详解第三讲、说明.html"这份资料进行深入学习,进一步巩固这些知识点。

    网络游戏-基于网络处理器实现用户报文协议的压缩传输方法.zip

    压缩传输方法通常包括预处理、编码和解码三个步骤。预处理阶段,游戏服务器会将待发送的数据进行整理,去除冗余信息,例如重复的游戏状态或者不重要的视觉细节。编码阶段,使用高效的压缩算法,如LZ77、LZSS、...

    HTTP协议详解.pdf

    - HTTP/2:改进了HTTP/1.1,引入了二进制分帧、多路复用、头部压缩等特性,显著提高了性能。 HTTP协议是Web服务的核心,理解和掌握其工作原理对于开发Web应用至关重要。通过深入学习,开发者能更好地优化性能,解决...

Global site tag (gtag.js) - Google Analytics