当支持SPDY的浏览器收到HTTP2(H2)响应时会发生什么?

时间:2016-10-25 05:26:11

标签: browser https cdn http2 spdy

我的直觉是,支持SPDY的浏览器会将其视为SPDY响应。但是,我能找到的最多是确保H2响应会优雅地降级到HTTP1.1。我正在考虑以面向H2的方式提供资产(多个请求,没有域分片等),但我确实需要支持一些非H2浏览器(例如Android 4.1的浏览器)。如果所有客户都至少符合SPDY标准,我会好吗?

奖金问题:混合协议是否有任何复杂问题?我们的网络框架不支持H2,但我正在考虑从CDN提供大部分资产。假设TLS。

1 个答案:

答案 0 :(得分:4)

启用了SPDY或HTTP / 2的浏览器使用TLS扩展(较旧的NPN或新的ALPN)来协商他们通过TLS讲话的协议。

客户端按优先顺序发送能够说出的协议列表(例如h2,spdy/3.1,http/1.1),并且服务器在该列表中的那些协议中选择一个也支持的协议(并且需要匹配安全性)约束)。

例如,如果您的旧版浏览器不支持h2,则会发送spdy/3.1,http/1.1,服务器将永远不会选择h2(即使它支持它)。 如果服务器不支持SPDY,则剩下的唯一选项是http/1.1,这就是"优雅降级"到HTTP / 1.1。

如果客户端请求说SPDY(而不是HTTP / 2),则服务器无法回复HTTP / 2,除非服务器上出现严重的实施错误。

SPDY正在逐步取消,支持HTTP / 2。例如,最近的Chrome版本don't support SPDY anymore

当您向不同的域发出请求时,没有任何复杂情况,并且服务器使用不同的协议:这是由浏览器透明处理的。

如果您的服务器可以说SPDY和HTTP / 1.1,并且CDN可以说HTTP / 2和HTTP / 1.1,那么您必须使用支持所有3种协议的浏览器来利用SPDY和HTTP / 2的好处。 浏览器可以与您的服务器协商SPDY,并与CDN协商HTTP / 2,以及由两个来源的资源组成的页面。

但是,浏览器很快会丢弃(或已经丢弃)SPDY,因此对于最近的浏览器,您可能最终会在服务器上使用HTTP / 1.1,而在CDN上使用HTTP / 2,从而失去SPDY | HTTP / 2的优势服务器上的资源。