Jer*_*oen 16 browser google-chrome http2 nghttp2
很长一段时间,浏览器每个主机最多使用6个并发HTTP 1.1连接来从网页中检索资产.远远超出这个黄金标准被认为是DOS并让你被禁止服务器.
现在有HTTP/2,我们可以在一个连接上复用许多HTTP请求.我们是否仍应对我们在连接上复用的并发请求数量使用类似的限制,以防止服务器过载?或者在单个连接上复用更多请求是否有害?
任何人都知道浏览器使用每台主机和HTTP/2服务器的每个连接限制了什么?
Fre*_*rdt 19
客户端和服务器可以启动的流的数量不是无限制的,它是由每个对等体在连接开始时发送SETTINGS_MAX_CONCURRENT_STREAMS的SETTINGS帧的参数强制要求的:参见RFC 7540的6.5.2节默认为无限制,RFC有以下建议:
建议此值不小于100,以免不必要地限制并行性.
但是,在考虑HTTP/2中的并行性时,流的数量不是唯一要考虑的参数.权重和流依赖性也会发挥作用.
每个流都有一个权重,RFC建议服务器根据权重为流分配资源.客户端,Firefox为CSS分配的权重高于图像.有关每个浏览器如何确定优先级并组织其流的更多详细信息,请参阅此精彩演示文稿.Chrome使用依赖关系,以便依赖关系链中最重要的元素(CSS,HTML)高于其他元素.请参阅此工具,该工具说明了Chrome生成的dependecy树.服务器端H2O是一个新的快速HTTP服务器,它为每个连接实现一个O(1)调度程序,以便根据依赖关系和权重将流发送到客户端.这意味着如果您请求具有默认依赖关系的500个元素,则每个流将获得服务器资源的1/500.
要求尽可能多的元素(对于常规Web浏览)应该没有任何缺点.根据HTTPArchive,40%的页面包含100多个元素,我认为同时向它们提供所有内容是合理的(如果流的数量保持在下面SETTINGS_MAX_CONCURRENT_STREAMS.我相信重要的是能够请求它们按顺序允许浏览器尽可能地呈现它.
| 归档时间: |
|
| 查看次数: |
6462 次 |
| 最近记录: |