每个主机的 HTTP 同时连接数限制.是每个选项卡、浏览器实例或全局



根据HTTP规范(w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4),HTTP客户端应该限制其连接:

使用持久连接的客户端应限制它们与给定服务器同时维护的连接数。单用户客户机不应与任何服务器或代理保持超过 2 个连接。

不同的

供应商以不同的方式实现此限制:http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

但是。此限制是适用于每个选项卡、每个浏览器实例还是全局适用于浏览器的所有实例?弹出窗口(对话框)是被视为选项卡的一部分还是独立选项卡的一部分?

与 websocket 相同,每个源的连接限制是否适用于每个选项卡、浏览器实例或全局?

浏览器

对于不同的浏览器、浏览器版本或互联网连接速度,实现细节必然会有所不同(IE8 在拨号上使用 2 个连接,否则最多使用 6 个连接)。

此外,这些限制通常是用户可配置的(即 Mozilla 中的 network.http.max-connections-per-server),并且不应根据浏览器版本假设特定值。但是,脚本可以访问实际值,例如IE中的window.maxConnectionsPerServer。

但是。此限制是适用于每个选项卡、每个浏览器实例还是全局适用于浏览器的所有实例?

我发现的唯一相关信息是关于IE(http://social.msdn.microsoft.com/Forums/ie/en-US/a46bb0ba-419d-43ec-ad1b-f9596d508ca3/simultaneous-http-connection-limit):

连接限制是每个进程,浏览器将确定进程创建作为网站所有者,您无法真正更改它。该过程可以在多个选项卡/窗口之间共享,也可能不共享,这取决于您无法控制的许多因素

有关浏览器的更多最新数据,请访问 www.browserscope.org/?category=network

RFC

有一个更新的草案,RFC2616过时(如果获得批准)。引用相关部分(来自 https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p1-messaging-21#section-6.2.3):

6.2.3. 并发

客户端应限制它们同时连接的数量维护到给定服务器。

HTTP的先前修订版提供了特定数量的连接作为天花板,但发现这对于许多应用来说是不切实际的。因此,此规范不强制要求特定的最大值连接数,但相反鼓励客户打开多个连接时保守。

通常使用多个连接来避免"线头"阻塞"问题,其中请求需要大量服务器端处理和/或具有较大的有效负载阻止后续请求在同一连接上。 但是,每个连接都会消耗服务器资源。 此外,使用多个连接可能会导致拥塞网络中的不良副作用。

请注意,服务器可能会拒绝它们认为滥用的流量,包括来自客户端的连接数量过多。

我没有详尽地研究过这个...... 我发现 1 台计算机可以打开大量浏览器或浏览器选项卡,并且每个选项卡将保持活动的 websocket 连接。

但是,对于服务器端事件(SSE 或 eventsource() ),情况并不相同。http://www.html5rocks.com/en/tutorials/eventsource/basics/

我在各种论坛上读到,当打开多个选项卡时,人们会遇到 SSE 问题(我认为 chrome 中有 6 个),这是因为浏览器限制了同时连接到单个 IP 地址的数量。

就好像 SSE 在页面的生命周期内保持连接一样。 然而,对于 websockets,情况并非如此。

想分享我最近与 chrome 的观察:

我使用 EVENTSOURCE API 打开一个持久的 http 连接。

超文本传输协议 -- HTTP/1.1:我可以在一个浏览器中打开 6 个连接(通过循环 EVENTSOURCE 6 次)或者使用一个事件源打开 6 个选项卡我可以在同一台机器上使用隐身铬打开 6 个新连接。超文本传输协议 -- HTTP/2:超过 20 个 [理论上他们说是 100] 我没有尝试。

感觉就像Chrome有一个http(TCP)连接池,可以一次保持打开状态。这个数字目前是 6 [在协议 http 1.1 的情况下]和 100 与 http2 无关标签/相同标签。

相关内容

  • 没有找到相关文章

最新更新