我在阅读启动HTTP / 2时正在阅读article。据说HTTP / 2基于SPDY(快速)协议,与HTTP / 1.1相比,它可以提供更快的浏览速度,使用"头字段压缩"和"多路复用"。这些术语如何起作用?
我是否应该相信,在HTTP / 1.1请求中,一个接一个地处理这些请求'方式?
答案 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页面需要加载这些附加脚本,则不会再向服务器发送请求,因为它们之前已经发送过。