HTTP/1.1 和 HTTP/2 混合请求

Posted

技术标签:

【中文标题】HTTP/1.1 和 HTTP/2 混合请求【英文标题】:HTTP/1.1 and HTTP/2 mixed requests 【发布时间】:2017-06-17 20:29:19 【问题描述】:

如果部分内容支持 HTTP/2,是否所有请求都通过 HTTP/1.1 处理? 例如,我的 Web 服务器只支持 HTTP/1.1,我已经与默认支持 HTTP/2 的 CDN 进行了集成。当我从我的站点打开一个页面时,第一个请求/响应将通过 HTTP/1.1,但下一个请求可以通过 HTTP/2 处理,因为这些请求将转到 CDN。

【问题讨论】:

我不确定我是否了解您的设置。通常,CDN 应充当代理,用户不应连接到实际服务器,而只能连接到 CDN 代理。你能提供更多细节吗? (无论如何,我认为不会有问题,浏览器会根据连接协商协议) @Schwern 关于设置 - 是的,CDN 用作代理,但通常用于静态内容,即从客户服务器加载的站点页面。因此,我们可以从一台服务器获取一些索引页面,并从另一台服务器获取放置在该页面上的内容。关于谈判 - 是的,我知道,但我不确定并问过 :) 这不是常见的情况,文档没有解释这种情况。 【参考方案1】:

您不会有任何问题,因为浏览器支持对您的站点的 HTTP/1.1 和对 CDN 的 HTTP/2。

浏览器可以对不同的域使用不同的协议,并且能够将它们从这些不同的域接收到的内容“合并”到一个页面中。

另请参阅:What happens when a browser that supports SPDY receives an HTTP2 (H2) response?。

【讨论】:

感谢您的回答! :) 您知道从CDN下载的内容是利用每个通道的并行下载,还是尝试使用大多数http/1.1浏览器使用的6并行连接策略来下载资产? 如果从 CDN 下载使用 HTTP/2,它将受益于 HTTP/2 的复用特性,因此它限制为 6 并行下载。 【参考方案2】:

HTTP2:

正在扩展,不是替换,以前的 HTTP 1.1 标准 它只是修改了数据的格式化(成帧)和传输方式 客户端和服务器之间 不以任何方式修改以前的应用程序语义。 无需修改即可交付现有应用程序。 (HTTP 方法、状态码、URI 和标头字段,保留在 地点)

所以你会没事的。 顺便在 Chrome > Network > "Protocol column" 中可以看到交易中使用的协议。

【讨论】:

以上是关于HTTP/1.1 和 HTTP/2 混合请求的主要内容,如果未能解决你的问题,请参考以下文章

NodeJs 中的 http、https 和 http2

HTTP/1.1 流水线和 HTTP/2 多路复用有啥区别?

HTTP1.0 HTTP 1.1 HTTP 2.0主要区别

网络请求

大量图像 - HTTP/1.1 与 HTTP/2?

Apache HTTP/2 客户端 5.0 POST 请求缺少有效负载/内容