与HTTP / 1.1相比,HTTP / 2如何提供更快的浏览速度?

时间:2015-02-25 12:20:42

标签: http http-headers httprequest multiplexing http2

我在阅读启动HTTP / 2时正在阅读article。据说HTTP / 2基于SPDY(快速)协议,与HTTP / 1.1相比,它可以提供更快的浏览速度,使用"头字段压缩"和"多路复用"。这些术语如何起作用?

我是否应该相信,在HTTP / 1.1请求中,一个接一个地处理这些请求'方式?

2 个答案:

答案 0 :(得分:9)

<强>复用

使用HTTP 1.1,花费大量时间等待。浏览器发送请求并等待响应返回,然后发送另一个GET等。带宽的低效使用。有时它会使用Pipelining,但是有时请求需要等待之前完成的请求。线路阻塞的问题。

通过多路复用,几乎没有等待,但浏览器可以同时询问数百种内容,并且它们将按照它们可以交付的任何顺序交付,并且没有单独的流或对象必须等待彼此。 (通过优先级和流量控制来帮助正确控制它们。)

这在高延迟连接上最为显着。有关它可以做的可见且清晰的演示,请参阅https://http2.golang.org/gophertiles?latency=1000上的golang&#gopshertiles演示(需要启用HTTP / 2的浏览器)

标头压缩

此外,HTTP / 2提供了标头压缩,使客户端能够在TCP连接生命周期中更早地挤入更多请求。在新TCP连接的早期慢启动期间,填充更多请求以使响应更早回来是很有价值的。 HTTP标头本质上是非常重复的。

服务器推送

在客户端要求之前,HTTP / 2服务器可以将数据发送到客户端,就好像客户端要求一样!如果服务器认为客户端可能也需要/需要,那么可以保存一半的RTT。

答案 1 :(得分:1)

从HTTP / 2开始,可以压缩标头和HTTP响应内容。使用HTTP / 1.1时,标题永远不会与内容相反(与Content-Encoding标头一起指定)。

多路复用与服务器推送有关。实际上,当服务器发送HTML页面时,它可以使用相同的连接来推送其他资源,如css和javascript文件。如果HTML页面需要加载这些附加脚本,则不会再向服务器发送请求,因为它们之前已经发送过。