作者:徐毛毛的大猫儿 | 来源:互联网 | 2023-05-20 12:55
我在http2 RST_STREAM中阅读了有关新功能的内容:
HTTP/2添加RST_STREAM帧以允许客户端改变主意; 如果浏览器导航离开页面,或者用户取消下载,则可以避免在不浪费所有带宽的情况下打开新连接.
怎么做呢?浏览器如何做到这一点?代码有什么变化吗?
1> sbordet..:
浏览器启动一个请求,然后改变主意,要么用户导航,要么取消.
在HTTP/1.1中,避免下载响应内容的唯一选择是关闭连接,因为客户端无法将这种中止请求的意图传达给服务器.关闭连接就是这样.
在HTTP/2中,如果客户端想要中止请求,则它发送RST_STREAM.当服务器收到RST_STREAM时,它将停止向客户端发送DATA帧,从而停止响应(或下载).该连接仍可用于其他请求,并且与已中止的请求/响应同时发生的请求/响应可能会继续进行.
通常,应用程序不需要做任何事情并且不知道RST_STREAM,它们都是由浏览器和服务器实现完成的.
有可能的是,当RST_STREAM从客户端传输到服务器时,请求的整个内容正在传输中并将到达客户端,客户端将丢弃它.但是,对于大响应内容,发送RST_STREAM可能很有可能在发送整个响应内容之前到达服务器,因此将节省带宽.