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时,会对其进行编码。 如下图。

转自:https://www.cnblogs.com/xuzhudong/p/8486761.html

HTTP内容编码和HTTP压缩的区别的更多相关文章

  1. 火狐firefox提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。”

    火狐firefox浏览器打开网也是时提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式.” 今早一来打开用PHPCMS做的网站时就提示这个错误,用其他浏览器打开提示的是 ...

  2. 基于哈夫曼编码的文件压缩(c++版)

    本博客由Rcchio原创 我了解到很多压缩文件的程序是基于哈夫曼编码来实现的,所以产生了自己用哈夫曼编码写一个压缩软件的想法,经过查阅资料和自己的思考,我用c++语言写出了该程序,并通过这篇文章来记录 ...

  3. HTTP 协议中的 Content-Encoding 和 Transfer-Encoding(内容编码和传输编码)

    转自:http://network.51cto.com/art/201509/491335.htm Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」.实际上,HT ...

  4. HTTP - 内容编码

    HTTP 应用程序有时在发送之前需要对内容进行编码.例如,在把很大的 HTML 文档发送给通过慢速连接上来的客户端之前,服务器可能就会对它进行压缩,这样有助于减少传输实体的时间. 内容编码过程 内容编 ...

  5. HTTP 内容编码,也就这 2 点需要知道 | 实用 HTTP

    Hi,大家好,我是承香墨影! HTTP 协议在网络知识中占据了重要的地位,HTTP 协议最基础的就是请求和响应的报文,而报文又是由报文头(Header)和实体组成.大多数 Http 协议的使用方式,都 ...

  6. #WEB安全基础 : HTTP协议 | 0x10 扩展HTTP报文结构概念和内容编码

    #以后的知识都是HTTP协议的扩展,如果精力有限可以选择暂时忽略,注意只是暂时忽略,以后的东西同样重要 HTTP传输数据时可以直接传输也可以对数据进行编码,由于编码在计算机内运行,所以会占用一些CPU ...

  7. 修改文件名或文件内容编码-convmv

    问题的出现 开发小伙伴把之前运行在windows server上的项目迁移到ubuntu上之后出现了中文乱码的问题,分析其原因是代码中创建文件未指定编码,所以就自动匹配了操作系统的编码,也就是从GBK ...

  8. while 运算符 初始编码 python2和python3的区别

    1.while 循环 2.运算符 3.初始编码 4.python2 和python3的区别 1.while循环: 关键词:while[循环]         break[跳出循环]         c ...

  9. python中的内容编码

    一.python编码简介 1)编码格式简介 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ASCII),ASCII(American Standard Code for In ...

  10. 字符编码 python2与python3的区别

    目录 1. 字符编码 2. 文本编辑器存储信息的过程 3. 编码: 1. 编码的历史 2. gb2312和gbk的区别 3. 编码和解码 4. python解释器 解释代码的流程 1. 读取文本到解释 ...

随机推荐

  1. 字符编码技术专题(一):快速理解ASCII、Unicode、GBK和UTF-8

    本文由阮一峰(ruanyifeng.com)分享,本文收录时有内容修订和排版优化. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象的复 ...

  2. DevOps 企业级 CI/CD 实战 —— 整合 GitLab+Jenkins+Harbor+Docker 实现代码全自动化流程管理

    前言 随着 AI 人工智能.云计算.Docker.K8S 等容器技术等的发展,DevOps 得到了广泛的应用和推广,CI / CD ( 持续集成 / 持续部署 )等概念不断深化和完善.CI/CD 是现 ...

  3. SpringBoot集成Jwt(详细步骤+图解)

    SpringBoot集成Jwt(详细步骤+图解)Jwt简介 JSON Web Token是目前最流行的跨域认证解决方案,,适合前后端分离项目通过Restful API进行数据交互时进行身份认证 Jwt ...

  4. 单点登录-SSO原理

    为什么需要单点登录 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任. 单点 ...

  5. CV高手是怎么炼成的?

    你平时都怎么复制粘贴的?是否每次都是复制一段粘贴一段?是否厌倦了每次只能复制粘贴一次的限制?那这篇文章就是为你量身订做的. CopyQ简介 CopyQ is clipboard manager – a ...

  6. oracle和sqlserver对于事务数据库死锁处理的区别

    create table aa_test ( id int constraint TEST_PK primary key, name varchar2(50) ) / insert into aa_t ...

  7. 认识soui4js(第1篇)

    源代码:https://github.com/soui4js/soui4js soui4js是soui4+quickjs的结合体. soui4是一套c++ directui客户端开发框架,soui4j ...

  8. Linux mint安装外部软件

    //更新系统  sudo apt-get update更新ruanjian sudo apt-get upgrade更新系统 //安装浏览器 sudo apt-get install chromium ...

  9. Linux网络优化踩坑net.ipv4.tcp_tw_recycle

    一.背景 来源于埋点上报服务,埋点上报服务是用户打开APP后点击.浏览.曝光等数据都会上报到埋点服务,收集数据后用来公司运营. 本次踩坑来源于监控到上课高峰期net.sockets.tcp.timew ...

  10. FLink自定义Kafka Source,处理后转发给下一个kafka topic

    一.依赖配置 pom文件:https://www.cnblogs.com/robots2/p/16048648.html kafka单机版安装:https://www.cnblogs.com/robo ...