计算机网络HTTP:HTTP/1.x 和 HTTP/2
Posted xiaobaizzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络HTTP:HTTP/1.x 和 HTTP/2相关的知识,希望对你有一定的参考价值。
- WEB性能的终极目标
- 减少到客户端的延迟,让用户能够尽可能快的打开前端网页并进行相关交互。
- 尽可能发送少的数据给服务器,从服务器下载尽可能少的数据,尽可能减少往返(Round Trips)。
- HTTP/1.x 的缺陷
- 线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求就会被阻塞。
- HTTP/1.0
- 缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个用户,也不记录过去的请求。
- 解决方法:添加头信息 --- 非标准的Connection字段Connection:keep-alive
- HTTP/1.1
- 改进
- 持久连接:引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection:keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)
- 管道机制:即在同一个TCP连接里面,客户端可以同时发送多个请求
- 分块传输编码:即服务端每产生一块数据,就发送一块,采用流模式代替缓存模式
- 新增请求方式:PUT,DELETE,OPTIONS,TRACE,CONNECT
- 缺点
- 虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有很多请求排队等着。这将导致“队头堵塞”。
- 避免方式:一是减少请求数,二是同时多开持久连接。
- 改进
- HTTP/2.0
- 特点
- 采用二进制格式而非文本格式:HTTP/1.1的头信息是文本,数据体可以是文本也可以是二进制。HTTP/2.0头信息和数据体都是二进制。
- 完全多路复用:HTTP/2.0复用TCP连接,在一个连接里,客户端和服务端都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了“队头堵塞”。
- 报头压缩
- HTTP协议无状态,导致每次请求都必须附上所以信息。所以,请求的很多头字段都是重复的,比如cookie,一样的内容每次都必须附带。
- 对于相同的头部,不必再通过请求发送,只需发送一次。
- 头信息使用gzip或compress压缩后再发送。
- 客户端和服务端同时维护一张头信息表,所有字段都会存入这个表,产生一个索引号,之后就不发送同一字段了,只需发送索引号。
- 服务器推送
- 允许服务器未经请求,主动向客户端发送资源
- 通过推送那些客户端将会需要的内容到客户端的缓存中,避免往返的延迟。
- 特点
以上是关于计算机网络HTTP:HTTP/1.x 和 HTTP/2的主要内容,如果未能解决你的问题,请参考以下文章
网络知识补习❄️| 由浅入深了解HTTPHTTP/1.x 的连接管理