gpt4 book ai didi

google-chrome - 我们应该在 HTTP/2 中复用多少并发请求

转载 作者:行者123 更新时间:2023-12-03 14:51:09 43 4
gpt4 key购买 nike

长期以来,浏览器在每个主机上最多使用 6 个并发 HTTP 1.1 连接来从网页检索 Assets 。超过(远远)超出这个黄金标准被认为是 DOS,并让您被禁止使用服务器。

现在有了 HTTP/2,我们可以在一个连接上复用多个 HTTP 请求。我们是否仍然应该对我们在连接上多路复用的并发请求数量使用类似的限制,以防止服务器过载?或者在单个连接上多路复用更多请求没有害处?

任何人都知道浏览器对 HTTP/2 服务器的每个主机和每个连接使用的限制是什么?

最佳答案

客户端和服务器可以启动的流数量不是无限的,这是由 SETTINGS_MAX_CONCURRENT_STREAMS 强制要求的。 SETTINGS 的参数每个对等体在连接开始时发送的帧:见 section 6.5.2 of RFC 7540默认为无限制,RFC 有以下建议:

It is recommended that this value be no smaller than 100, so as tonot unnecessarily limit parallelism.


然而,在 HTTP/2 中考虑并行性时,流的数量并不是要考虑的唯一参数。权重和流依赖也开始发挥作用。
每个流都有一个权重,RFC 建议服务器根据它们的权重为流分配资源。客户端,Firefox 为 CSS 分配比图像更高的权重。 See this great presentation for more details about how each browser prioritizes and organizes its streams . Chrome 使用依赖项,因此最重要的元素(CSS、HTML)在依赖项链中的位置高于其他元素。 See this tool这说明了 Chrome 生成的依赖树。服务器端, H2O, a new and fast HTTP server , 为每个连接实现一个 O(1) 调度程序,以便根据依赖项和权重将流发送到客户端。这意味着如果您请求 500 个具有默认依赖项的元素,每个流将获得 1/500 的服务器资源。
请求尽可能多的元素(用于常规网页浏览)应该没有任何缺点。根据 HTTPArchive , 40% 的页面包含超过 100 个元素,我认为同时询问它们是合理的(假设流的数量低于 SETTINGS_MAX_CONCURRENT_STREAMS 。我相信重要的是能够请求它们以允许浏览器尽可能快地呈现它的顺序。

关于google-chrome - 我们应该在 HTTP/2 中复用多少并发请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759054/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com