HTTP 各版本特点与区别

HTTP 各版本一览表

版本 功能 备注
0.9 仅支持 Get
仅能访问 HTML 格式资源
简单单一
1.0 新增POST,DELETE,PUT,HEADER等方式
增加请求头和响应头概念,指定协议版本号,携带其他元信息(状态码、权限、缓存、内容编码)
扩展传输内容格式(图片、音视频、二进制等都可以传输)
存活时间短
1.1 长连接:新增 Connection 字段,可以通过keep-alive保持长连接
管道化:一次连接就形成一次管道,管道内进行多次有序响应。允许服务端发生多次请求,但是响应按序返回
缓存处理:新增 cache-control
断点续传
状态码增加
当前主流版本号
存在Header 重复问题
2.0 二进制分帧:数据体和头信息可以都是二进制,统称帧
多路复用与数据流:能同时发送和响应多个请求,通过数据流来传输
头部压缩:对 Header 进行压缩,避免重复浪费
服务器推送:服务器可以向客户端主动发送资源
2005发布

HTTP 1.1

长连接

HTTP/1.1 最大的变化就是引入了持久连接(persistent connection),在HTTP/1.1中默认开启 Connection: keep-alive,即TCP连接默认不关闭,可以被多个请求复用。
客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。不过,规范的做法是,客户端在最后一个请求时,发送Connection: close,明确要求服务器关闭TCP连接。客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。不过,规范的做法是,客户端在最后一个请求时,发送Connection: close,明确要求服务器关闭TCP连接。

断点续传

Header 字段

服务端

Accept-Ranges:表示服务器支持断点续传,并且数据传输已字节为单位

Etag:资源的唯一 tag 后端自定义,验证文件是否修改过。修改过就重新重头传输

Last-Modified:文件上次修改时间

Content-Range:返回数据范围

客户端

If-Range:服务器给的 Etag 值

Range:请求的数据范围

If-Modified-Since: 将服务器响应的 Last-Modified 保存, 下次发送可以携带,后台接受判断文件是否修改,没有可以返回 304状态码,叫客户端使用缓存数据,避免重复发出资源。

流程

#mermaid-svg-u0F3a1VyhDXGrDTc .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .label text{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .node rect,#mermaid-svg-u0F3a1VyhDXGrDTc .node circle,#mermaid-svg-u0F3a1VyhDXGrDTc .node ellipse,#mermaid-svg-u0F3a1VyhDXGrDTc .node polygon,#mermaid-svg-u0F3a1VyhDXGrDTc .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-u0F3a1VyhDXGrDTc .node .label{text-align:center;fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .node.clickable{cursor:pointer}#mermaid-svg-u0F3a1VyhDXGrDTc .arrowheadPath{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-u0F3a1VyhDXGrDTc .flowchart-link{stroke:#333;fill:none}#mermaid-svg-u0F3a1VyhDXGrDTc .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-u0F3a1VyhDXGrDTc .edgeLabel rect{opacity:0.9}#mermaid-svg-u0F3a1VyhDXGrDTc .edgeLabel span{color:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-u0F3a1VyhDXGrDTc .cluster text{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-u0F3a1VyhDXGrDTc .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-u0F3a1VyhDXGrDTc text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-u0F3a1VyhDXGrDTc .actor-line{stroke:grey}#mermaid-svg-u0F3a1VyhDXGrDTc .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-u0F3a1VyhDXGrDTc #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .sequenceNumber{fill:#fff}#mermaid-svg-u0F3a1VyhDXGrDTc #sequencenumber{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc #crosshead path{fill:#333;stroke:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .messageText{fill:#333;stroke:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-u0F3a1VyhDXGrDTc .labelText,#mermaid-svg-u0F3a1VyhDXGrDTc .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-u0F3a1VyhDXGrDTc .loopText,#mermaid-svg-u0F3a1VyhDXGrDTc .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-u0F3a1VyhDXGrDTc .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-u0F3a1VyhDXGrDTc .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-u0F3a1VyhDXGrDTc .noteText,#mermaid-svg-u0F3a1VyhDXGrDTc .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-u0F3a1VyhDXGrDTc .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-u0F3a1VyhDXGrDTc .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-u0F3a1VyhDXGrDTc .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-u0F3a1VyhDXGrDTc .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc .section{stroke:none;opacity:0.2}#mermaid-svg-u0F3a1VyhDXGrDTc .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-u0F3a1VyhDXGrDTc .section2{fill:#fff400}#mermaid-svg-u0F3a1VyhDXGrDTc .section1,#mermaid-svg-u0F3a1VyhDXGrDTc .section3{fill:#fff;opacity:0.2}#mermaid-svg-u0F3a1VyhDXGrDTc .sectionTitle0{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .sectionTitle1{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .sectionTitle2{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .sectionTitle3{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-u0F3a1VyhDXGrDTc .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc .grid path{stroke-width:0}#mermaid-svg-u0F3a1VyhDXGrDTc .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-u0F3a1VyhDXGrDTc .task{stroke-width:2}#mermaid-svg-u0F3a1VyhDXGrDTc .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc .taskText:not([font-size]){font-size:11px}#mermaid-svg-u0F3a1VyhDXGrDTc .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-u0F3a1VyhDXGrDTc .task.clickable{cursor:pointer}#mermaid-svg-u0F3a1VyhDXGrDTc .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-u0F3a1VyhDXGrDTc .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-u0F3a1VyhDXGrDTc .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-u0F3a1VyhDXGrDTc .taskText0,#mermaid-svg-u0F3a1VyhDXGrDTc .taskText1,#mermaid-svg-u0F3a1VyhDXGrDTc .taskText2,#mermaid-svg-u0F3a1VyhDXGrDTc .taskText3{fill:#fff}#mermaid-svg-u0F3a1VyhDXGrDTc .task0,#mermaid-svg-u0F3a1VyhDXGrDTc .task1,#mermaid-svg-u0F3a1VyhDXGrDTc .task2,#mermaid-svg-u0F3a1VyhDXGrDTc .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-u0F3a1VyhDXGrDTc .taskTextOutside0,#mermaid-svg-u0F3a1VyhDXGrDTc .taskTextOutside2{fill:#000}#mermaid-svg-u0F3a1VyhDXGrDTc .taskTextOutside1,#mermaid-svg-u0F3a1VyhDXGrDTc .taskTextOutside3{fill:#000}#mermaid-svg-u0F3a1VyhDXGrDTc .active0,#mermaid-svg-u0F3a1VyhDXGrDTc .active1,#mermaid-svg-u0F3a1VyhDXGrDTc .active2,#mermaid-svg-u0F3a1VyhDXGrDTc .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-u0F3a1VyhDXGrDTc .activeText0,#mermaid-svg-u0F3a1VyhDXGrDTc .activeText1,#mermaid-svg-u0F3a1VyhDXGrDTc .activeText2,#mermaid-svg-u0F3a1VyhDXGrDTc .activeText3{fill:#000 !important}#mermaid-svg-u0F3a1VyhDXGrDTc .done0,#mermaid-svg-u0F3a1VyhDXGrDTc .done1,#mermaid-svg-u0F3a1VyhDXGrDTc .done2,#mermaid-svg-u0F3a1VyhDXGrDTc .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-u0F3a1VyhDXGrDTc .doneText0,#mermaid-svg-u0F3a1VyhDXGrDTc .doneText1,#mermaid-svg-u0F3a1VyhDXGrDTc .doneText2,#mermaid-svg-u0F3a1VyhDXGrDTc .doneText3{fill:#000 !important}#mermaid-svg-u0F3a1VyhDXGrDTc .crit0,#mermaid-svg-u0F3a1VyhDXGrDTc .crit1,#mermaid-svg-u0F3a1VyhDXGrDTc .crit2,#mermaid-svg-u0F3a1VyhDXGrDTc .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-u0F3a1VyhDXGrDTc .activeCrit0,#mermaid-svg-u0F3a1VyhDXGrDTc .activeCrit1,#mermaid-svg-u0F3a1VyhDXGrDTc .activeCrit2,#mermaid-svg-u0F3a1VyhDXGrDTc .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-u0F3a1VyhDXGrDTc .doneCrit0,#mermaid-svg-u0F3a1VyhDXGrDTc .doneCrit1,#mermaid-svg-u0F3a1VyhDXGrDTc .doneCrit2,#mermaid-svg-u0F3a1VyhDXGrDTc .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-u0F3a1VyhDXGrDTc .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-u0F3a1VyhDXGrDTc .milestoneText{font-style:italic}#mermaid-svg-u0F3a1VyhDXGrDTc .doneCritText0,#mermaid-svg-u0F3a1VyhDXGrDTc .doneCritText1,#mermaid-svg-u0F3a1VyhDXGrDTc .doneCritText2,#mermaid-svg-u0F3a1VyhDXGrDTc .doneCritText3{fill:#000 !important}#mermaid-svg-u0F3a1VyhDXGrDTc .activeCritText0,#mermaid-svg-u0F3a1VyhDXGrDTc .activeCritText1,#mermaid-svg-u0F3a1VyhDXGrDTc .activeCritText2,#mermaid-svg-u0F3a1VyhDXGrDTc .activeCritText3{fill:#000 !important}#mermaid-svg-u0F3a1VyhDXGrDTc .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-u0F3a1VyhDXGrDTc g.classGroup text .title{font-weight:bolder}#mermaid-svg-u0F3a1VyhDXGrDTc g.clickable{cursor:pointer}#mermaid-svg-u0F3a1VyhDXGrDTc g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-u0F3a1VyhDXGrDTc g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-u0F3a1VyhDXGrDTc .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-u0F3a1VyhDXGrDTc .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-u0F3a1VyhDXGrDTc .dashed-line{stroke-dasharray:3}#mermaid-svg-u0F3a1VyhDXGrDTc #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc .commit-id,#mermaid-svg-u0F3a1VyhDXGrDTc .commit-msg,#mermaid-svg-u0F3a1VyhDXGrDTc .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-u0F3a1VyhDXGrDTc g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-u0F3a1VyhDXGrDTc g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-u0F3a1VyhDXGrDTc g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-u0F3a1VyhDXGrDTc .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-u0F3a1VyhDXGrDTc .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-u0F3a1VyhDXGrDTc .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-u0F3a1VyhDXGrDTc .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-u0F3a1VyhDXGrDTc .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-u0F3a1VyhDXGrDTc .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-u0F3a1VyhDXGrDTc .edgeLabel text{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u0F3a1VyhDXGrDTc .node circle.state-start{fill:black;stroke:black}#mermaid-svg-u0F3a1VyhDXGrDTc .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-u0F3a1VyhDXGrDTc #statediagram-barbEnd{fill:#9370db}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-state .divider{stroke:#9370db}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-u0F3a1VyhDXGrDTc .note-edge{stroke-dasharray:5}#mermaid-svg-u0F3a1VyhDXGrDTc .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-u0F3a1VyhDXGrDTc .error-icon{fill:#522}#mermaid-svg-u0F3a1VyhDXGrDTc .error-text{fill:#522;stroke:#522}#mermaid-svg-u0F3a1VyhDXGrDTc .edge-thickness-normal{stroke-width:2px}#mermaid-svg-u0F3a1VyhDXGrDTc .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-u0F3a1VyhDXGrDTc .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-u0F3a1VyhDXGrDTc .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-u0F3a1VyhDXGrDTc .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-u0F3a1VyhDXGrDTc .marker{fill:#333}#mermaid-svg-u0F3a1VyhDXGrDTc .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-u0F3a1VyhDXGrDTc {color: rgba(0, 0, 0, 0.75);font: normal normal normal normal 16px/26px -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;}ClientServer客户端向移动端请求资源开始下载 Accept-Ranges:bytes, Etag:"xxxxxx", Last-Modified: xxxxloop[中断]携带 If-Range: xxx, Range: xxx- 请求后面部分数据检查资源是否修改过,如果没有,续传 Range 部分。loop[Etag 检查]完成断点续传ClientServer

注意:断点续传后台返回状态码为 206。

Tip: 断点续传与分块编码传输(主要解决长度没有告知)不一致

HTTP2

二进制分帧

HTTP 1.1及之前版本, 头信息基于文本,数据体可以是文本或者二进制,HTTP2.0 数据体和头信息可以都是二进制,统称为’帧’,即头信息帧和数据帧,且HTTP2.0把通信基本单位缩小为帧。

多路复用

通过单一的 HTTP2.0连接连续发起多重请求-响应消息,即客户端和服务器可以同时发送多个请求和响应,而不用顺序一一对应。

HTTP消息被分为独立的帧,乱序发送,接收端根据标识符号和首部将信息重新组装起来。

数据流

因为 HTTP/2 的数据包是不按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应。HTTP/2 将每个请求或回应的所有数据包,称为一个数据流(stream)。每个数据流都有一个独一无二的编号。数据包发送的时候,都必须标记数据流ID,用来区分它属于哪个数据流。

另外还规定,客户端发出的数据流,ID一律为奇数,服务器发出的,ID为偶数。数据流发送到一半的时候,客户端和服务器都可以发送信号(RST_STREAM帧),取消这个数据流。HTTP/1.1取消数据流的唯一方法,就是关闭TCP连接。这就是说,HTTP/2 可以取消某一次请求,同时保证TCP连接还打开着,可以被其他请求使用。客户端还可以指定数据流的优先级。优先级越高,服务器就会越早回应。

头部压缩

为什么要压缩?

由于头信息使用文本,没有压缩,请求时候会来回重复传递,造成流量浪费。

头部压缩技术原理

参考HTTP2头部压缩技术介绍

头部压缩需要支持 HTTP2的浏览器和服务器之间:

  • 维护一份相同的静态字典(包含常见的头部名称,以及常见的头部名称与值的组合)
  • 维护一份相同的动态字典,动态添加内容(即实际的 Header 值)
  • 支持基于静态哈夫曼码表的哈夫曼编码(Huffman Coding)

原理图:

总结: 通过映射表,传递对应编码和值来达到压缩。

默认什么情况下使用同一个连接

  • 同一个域名下的资源
  • 不同域名但是满足两个条件:1)解析到同一个 IP;2)使用同一个证书

参考

HTTP 各版本区别,HTTP2的新特性 – 语雀 - lx70770:简述各版本特点区别

HTTP 各版本特性与区别:

HTTP文件传输-断点续传原理 – 跳墙网 - 神秘网友:头信息字段和流程列举。

HTTP 各版本特点与区别相关推荐

  1. Python 应用领域以及版本之间的区别

    Python 应用领域以及版本之间的区别 一.Python应用领域 Python+人工智能,给你更多研究方向选择! 企业级综合实战项目,集六大前沿技术为一体 二. Python 2与Python 3的 ...

  2. PHP如何进行错误与异常处理(PHP7中的异常处理和之前版本异常处理的区别)

    PHP如何进行错误与异常处理(PHP7中的异常处理和之前版本异常处理的区别) 一.总结 一句话总结: throwable接口+Error类 在PHP7更新中有一条:更多的Error变为可捕获的Exce ...

  3. [vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别?

    [vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别? Vue CLI 的包名称由 vue-cli 改成了 @vue/cli vue cli 3 npm install -g @v ...

  4. JEECG 商业版本和开源版本有什么区别呢?

    好纠结啊,JEECG 商业版本和开源版本有什么区别呢? 小J博士来给你解答: 商业版本独有功能: 1.流程设计器 2.集成工作流引擎activit,智能化封装,在线配置表单,在线设计流程,流程和表单挂 ...

  5. 好纠结啊,JeeWx商业版本和开源版本有什么区别呢?

    好纠结啊,JeeWx商业版本和开源版本有什么区别呢? JeeWx开源版本是一套基础微信开发平台,有基础的微信菜单.素材管理.微信对接等基础功能,适合于开发者学习研究. JeeWx商业版本是一套成熟的微 ...

  6. Android各个版本API的区别

    Android各个版本API的区别 Android 1.5 API变更概要: 1.UI framework · Framework for easier background/UI thread in ...

  7. office2020与2016版的不同_Office2016与Office2019,这两个版本有些什么区别

    不知道大家有没有发现,自Office2007版开始,到Office2010.Office2013.Office2016,到现在的Office2019,基本上每3年更新一次版本,是不是这个版本还没有玩明 ...

  8. win10下c语言哪个版本号,怎么查看我的电脑用的是win10的哪个版本?win10各版本之间的区别...

    有时候我们会需要进行查看电脑上安装的windows系统版本及系统版本号,但如果不知道该怎样查看的话该怎么办呢?特别是WIN10系统有很多版本,下面分享一下如何查看win10版本号. win10版本号如 ...

  9. SQL server 2000 标准版、企业版、开发版、个人版各版本之间的区别

    SQL server 2000 标准版.企业版.开发版.个人版各版本之间的区别 企业版提供了最多的功能特性和最佳的性能,适用于大规模的企业生产应用环境. 标准版的功能相对少一些,比较适合于中小规模的企 ...

最新文章

  1. ffmpeg4编解码例子
  2. 百家中华老字号故宫过大年
  3. JAVA设计模式--辛格尔顿
  4. java uuid 第三方_JAVA生成短8位UUID
  5. Windows 键盘快捷键 : Windows 快捷键
  6. python webdriver 登录163邮箱发邮件加附件, 外加数据和程序分离,配置文件的方式...
  7. Linux firewall防火墙详解(二)——firewall配置
  8. ansible 第一次练习
  9. MySQL设置mysqld_MySQL指定mysqld启动时所加载的配置文件
  10. 处女作:《游戏AI程序设计实战》2019.4.1
  11. HTML如何设置图片为背景图片
  12. 搜狗提交软件之搜狗泛目录大量泛收录
  13. Microsoft Word 2007 向程序发送命令时出现问题解决方法
  14. 主界面边框流动效果长时间挂机后会卡顿
  15. 今年晋升本没抱希望,已有绩效更好的同事将参加晋升,leader却临时让我也去答辩,怀疑自己被拉去陪跑,该怎么办?...
  16. 各位观众老爷不如点进来随便评论几句QUQ
  17. git基本命令及使用
  18. Android APP的安装路径
  19. 我在美国与“狼”共舞的日子(6)
  20. 音频压缩工具——Speex的使用

热门文章

  1. 弹性碰撞后速度方向_MEMS加速度计辐射效应
  2. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串
  3. 超详细 Nginx 极简教程,傻瓜一看也会!
  4. PARSEC測试集的应用领域和working set的大小
  5. python运算符和表达式
  6. tvOS模拟器遥控的快捷键
  7. 电子工程师必须知道的10个网站 !!!
  8. 家庭背景音乐的发展趋势
  9. 获取子页面iframe的点击事件及iframe跨域的交互
  10. Project Euler 1-25