HTTP 2.0 为什么这么设计

HTTP 2.0 为什么这么设计

00:00
17:48

HTTP 1.0 是 1996 年发布的,奠定了 web 的基础。时隔三年,1999 年又发布了 HTTP 1.1,对功能上做了扩充。之后又时隔十六年,2015 年发布了 HTTP 2.0。

同学们肯定会觉得,隔了这么长时间,而且还从版本号还从 1 到了 2,那肯定有很多的新功能。其实不是的,HTTP 2.0 没有没有功能上的新增,只是优化了性能。

为什么要这么大的版本升级来优化性能,HTTP 1.1 的性能很差么?

那我们就来看下 HTTP 1.1 有什么问题:

HTTP 1.1 的问题

我们知道,HTTP 的下层协议是 TCP,需要经历三次握手才能建立连接。而 HTTP 1.0 的时候一次请求和响应结束就会断开链接,这样下次请求又要重新三次握手来建立连接。


为了减少这种建立 TCP 链接的消耗,HTTP 1.1 支持了 keep-alive,只要请求或响应头带上 Connection: keep-alive,就可以告诉对方先不要断开链接,我之后还要用这个链接发消息。当需要断开的时候,再指定 Connection: close 的 header。这样就可以用同一个 TCP 链接进行多次 HTTP 请求响应了:


但这样虽然减少了链接的建立,在性能上却有问题,下次请求得等上一个请求返回响应才能发出。

这个问题有个名字,叫做队头阻塞,很容易理解,因为多个请求要排队嘛,队前面的卡住了,那后面的也就执行不了了。怎么解决这个问题呢?


HTTP 1.1 提出了管道的概念,就是多个请求可以并行发送,返回响应后再依次处理。


更多内容请查看原文:https://mp.weixin.qq.com/s/YZaxf9GBvh_rT8hRx1XPbA

以上内容来自专辑
用户评论

    还没有评论,快来发表第一个评论!