本文转自:
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时,会对其进行编码。 如下图。
分享到:
相关推荐
在传输的过程中,还可以加入很多第三方的功能,比如数据压缩、安全防护等等。 1、HTTP协议是什么? HTTP协议由来 而超文本说明传输的数据首先是文本,不是”二进制包“,不是杂乱无章的数据,而是具有意义的可以被...
2.5 压缩的SLIP 18 2.6 PPP:点对点协议 18 2.7 环回接口 20 2.8 最大传输单元MTU 21 2.9 路径MTU 21 2.10 串行线路吞吐量计算 21 2.11 小结 22 第3章 IP:网际协议 24 3.1 引言 24 3.2 IP首部 24 3.3 IP路由选择 27...
Xpress 压缩算法具有三种变体,均专为提高速度而设计。最快的变体 Plain LZ77 实现了 LZ77 算法 ( UASDC )。较慢的变体 LZ77+Huffman 在 LZ77 数据上添加了 Huffman 编码通道。第三个变体 LZNT1 实现了 LZ77,没有第...
(1)压缩文件中包含了三个pcap数据包,对应了访问亚马逊、知乎专栏、爱奇艺网站首页的流量,这三个网站加载的资源中已经支持HTTP/3协议,因此在访问的过程中能捕获到由QUIC协议承载的HTTP/3协议的流量。 (2)pcap...
在MQTT协议中,有三个主要角色:发布者(Publisher)、订阅者(Subscriber)和代理(Broker)。发布者将消息发布到特定的主题(Topic),而订阅者可以选择订阅感兴趣的主题,从而接收相关消息。代理负责接收、转发和...
1. 压缩多协议自寻址数据包的方法。 2. 用于建立、设定和测试数据链路连接的LCP。 3. 一族用于建立、设定不同网络层协议的NCP。 本文档定义了PPP的组织和方法,以及PPP封装,与之一起定义的还有:扩展选项协商...
在构建主从应答式三级结构煤矿安全监控系统的基础上,分析了系统的通信协议,并重点应用数据压缩技术对通信协议进行改进。采用矩阵模型对改进后的通信协议在减少传输数据量及提高系统实时性方面的优势进行了理论分析。
《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输...
◆ 备份文件支持媒体播放器等第三方软件播放,保证录像资料的客观性; ◆ 支持预录像功能; ◆ 支持移动侦测录像,报警录像,计划录像等多种录像方式; ◆ 支持移动侦测灵敏度独立调整; ◆ 支持云台,报警,录像...
国际知名的Unix和网络专家,《TCP/IP 详解》(三卷本)作者 W.Richard Stevens(1951-1999),是国际知名的Unix和网络专家;受人尊敬的计算机图书作家;同时他还是广受欢迎的教师和顾问。Stevens先生1951年生于...
近来还主持翻译了Comer写的《TCP/IP网际互联》计算机网络经典教材一套三卷本(电子工业出版社1998年出版),Harnedy写的《简单网络管理协议教程》(电子工业出版社1999年出版)。 陆雪莹,女,1973年1月出生。1994年7月...
国际知名的Unix和网络专家,《TCP/IP 详解》(三卷本)作者 W.Richard Stevens(1951-1999),是国际知名的Unix和网络专家;受人尊敬的计算机图书作家;同时他还是广受欢迎的 教师和顾问。Stevens先生1951年生于...
iptel提供了一个例子可供参观:http://www.iptel.org/~sipsc/index/attendedTransfer_index.html他给出了Phone1 Proxy Phone2 Phone3 10.25.200.218 10.25.200.148:5060 10.25.200.220:5060 10.25.200.211:5060 三个...
地址发现协议(BOOTP和DHCP) 71 8.1 “引导”协议(BOOTP) 71 8.2 动态主机配置协议(DHCP) 72 8.2.1 DHCP如何工作 72 8.2.2 理解租用地址 73 8.3 管理地址池 74 8.4 DHCP能处理的其他分配 75 ...
CSDN海神之光上传的代码均可运行,亲测可用,...通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议
CSDN海神之光上传的代码均可运行,亲测可用,...通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议
CSDN海神之光上传的代码均可运行,亲测可用,...通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议
CSDN海神之光上传的代码均可运行,亲测可用,...通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议
该压缩包包含三个文档,分别是SMTP协议详解,POP3协议详解,MIME协议详解,文档中详细介绍了一个邮件发送和接收的过程分析,协议本身的包含的命令和工作过程,为开发邮件代理的客户端提供技术基础。
半年亲测 M1 / M2 / M3 系列可用, 压缩包包含: 一:OMI 录屏专家 (1.3.8):能同时录屏和画中画摄像头。同时录制系统声音和麦克风人声。自定义录制画面尺寸,分辨率,帧率和录制时长。 二:**OmniPlayer (2.1.3):...