HTTP2中的RST_STREAM帧

时间:2015-02-26 07:12:36

标签: http http2

我读到了http2 RST_STREAM中的新功能:

  

HTTP / 2添加了RST_STREAM框架以允许客户端改变主意;   如果浏览器导航离开页面,或者用户取消了   下载,它可以避免必须打开新连接而不浪费   所有这些带宽。

怎么做?浏览器如何做到这一点?代码有什么变化吗?

1 个答案:

答案 0 :(得分:5)

浏览器会发起请求,然后改变主意,可以是用户导航或取消。

在HTTP / 1.1中,避免下载响应内容的唯一选择是关闭连接,因为客户端无法将这种中止请求的意图传达给服务器。关闭连接就是这样。

在HTTP / 2中,如果客户端想要中止请求,它会发送一个RST_STREAM。当服务器收到RST_STREAM时,它将停止向客户端发送DATA帧,从而停止响应(或下载)。 该连接仍可用于其他请求,并且与已中止的请求/响应同时发生的请求/响应可能会继续进行。

通常,应用程序不需要执行任何操作,也不需要知道RST_STREAM,它们都是由浏览器和服务器实现完成的。

当RST_STREAM从客户端传送到服务器时,请求的整个内容可能正在传输中并且将到达客户端,这将丢弃它。 但是,对于较大的响应内容,发送RST_STREAM可能很有可能在发送整个响应内容之前到达服务器,因此可以节省带宽。