【问题标题】:Is the per-host connection limit raised with HTTP/2?HTTP/2 是否提高了每个主机的连接限制?
【发布时间】:2016-08-18 13:44:25
【问题描述】:

浏览器对每个主机的并行 XHR 数量有限制(现在大约 6 个)。

此限制是否适用于多路 HTTP/2 连接?

【问题讨论】:

    标签: browser xmlhttprequest restriction http2


    【解决方案1】:

    在使用 HTTP/1.1 时,浏览器将每个域的连接数限制为 6-8 个,具体取决于浏览器实现。 这允许每个域最多 6-8 个并发请求。

    使用 HTTP/2,浏览器在每个域中仅打开 1 个连接。 不过,得益于 HTTP/2 协议的多路复用特性,每个域的并发请求数不限于 6-8 个,而是几乎无限制。

    实际上是无限的,因为浏览器和服务器可以通过称为SETTINGS_MAX_CONCURRENT_STREAMSHTTP/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 是什么?
    • 该设置未协商。服务器告诉客户端它支持多少并发流,客户端告诉服务器它支持多少并发推流。要知道值,只需查看两侧的配置即可。
    猜你喜欢
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2012-10-23
    • 2011-10-03
    • 2017-09-10
    • 1970-01-01
    • 2015-03-28
    • 2023-03-29
    相关资源
    最近更新 更多