HTTP/2 是不是提高了每个主机的连接限制?
Posted
技术标签:
【中文标题】HTTP/2 是不是提高了每个主机的连接限制?【英文标题】:Is the per-host connection limit raised with HTTP/2?HTTP/2 是否提高了每个主机的连接限制? 【发布时间】:2016-08-18 13:44:25 【问题描述】:浏览器对每个主机的并行 XHR 数量有限制(现在大约 6 个)。
此限制是否适用于多路 HTTP/2 连接?
【问题讨论】:
【参考方案1】:在使用 HTTP/1.1 时,浏览器将每个域的连接数限制为 6-8 个,具体取决于浏览器实现。 这允许每个域最多 6-8 个并发请求。
使用 HTTP/2,浏览器在每个域中仅打开 1 个连接。 不过,得益于 HTTP/2 协议的多路复用特性,每个域的并发请求数不限于 6-8 个,而是几乎无限制。
实际上是无限的,因为浏览器和服务器可以通过称为SETTINGS_MAX_CONCURRENT_STREAMS
的HTTP/2 configuration parameter 限制并发请求的数量。
典型的限制在 100 左右(Firefox 的默认值 network.http.spdy.default-concurrent
- 注意这里的 spdy
名称:它是 HTTP/2 协议的协议祖先)但可能更大(或者,不太常见,更小),取决于浏览器实现和您连接的服务器。
预计这些限制会随着 HTTP/2 的演变和更广泛的使用而变化(与 HTTP/1.1 的情况相同:浏览器开始时有 2 个连接,多年后达到 6-8 个使用、经验和调整)。
我认为浏览器如何处理正常浏览和使用 XHR 的连接数和并发请求之间没有任何区别,因此上述解释也适用于 XHR。
【讨论】:
客户端和服务器都可以指定SETTINGS_MAX_CONCURRENT_STREAMS
。如果客户端为服务器指定一个值,则表示服务器能够推送多少资源的限制。如果服务器将值指定给客户端,则表明客户端能够请求多少项。我不确定 Firefox 是否仅使用 network.http.spdy.default-concurrent
来指定服务器的限制,或者也将其请求限制为相同的值。
如何观察给定服务器的 SETTINGS_MAX_CONCURRENT_STREAMS 是什么?
该设置未协商。服务器告诉客户端它支持多少并发流,客户端告诉服务器它支持多少并发推流。要知道值,只需查看两侧的配置即可。以上是关于HTTP/2 是不是提高了每个主机的连接限制?的主要内容,如果未能解决你的问题,请参考以下文章