【问题标题】:http2 domain sharding without hurting performancehttp2 域分片而不损害性能
【发布时间】:2019-03-03 17:50:06
【问题描述】:

大多数文章都认为使用域分片会损害性能,但实际上并不完全正确。在特定条件下,一个连接可以重复用于不同的域:

  • 它们解析到相同的 IP
  • 在安全连接的情况下,同一个证书应涵盖两个域

https://www.rfc-editor.org/rfc/rfc7540#section-9.1.1

正确吗?有人用吗?

CDN 呢?我能否保证他们将用户定向到同一服务器 (IP)?

【问题讨论】:

    标签: cdn sharding http2


    【解决方案1】:

    是的,这是 HTTP/2 的好处之一,理论上允许您继续为 HTTP/1.1 用户分片,并为 HTTP/2 用户自动取消分片。

    现实情况和往常一样复杂一些 - 主要是由于实施问题和服务器解析到您所说的不同 IP 地址。这篇博文已经有几年历史了,但描述了一些问题:https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing/。也许从那以后它有所改善,但可以想象问题仍然存在。 ORIGIN frame 等新功能也应该有所帮助,但尚未得到广泛支持。

    但我认为值得重新审视分片实际上对 HTTP/1.1 有益的假设。建立新连接的成本(DNS 查找、TCP 设置、TLS 握手以及实际发送 HTTP 消息)并非无关紧要,研究表明 6 个连接的浏览器限制确实被使用了,更不用说通过分片添加更多连接了。连接、拆分和内联通常是更好的选择,这些仍然可以用于 HTTP/2。在您的网站上尝试一下,衡量是确保这一点的最佳方式!

    顺便说一句,出于这些原因(和安全性),我不太热衷于从他们的 CDN 中使用公共库(例如 jquery、bootstrap 等),而不是在本地托管。在我看来,已经缓存了您网站使用的版本的用户的性能优势被夸大了。

    有了这些东西,HTTP/1.1 仍然可以在没有分片域的情况下工作。它可能(可以说)更慢,但不会中断。但是大多数用户are likely on HTTP/2 那么为少数用户增加复杂性真的值得吗?这不是一种在现代浏览器上逐步增强您的网站的方法(并鼓励那些不使用的人升级)吗?对于较大的网站(例如 Google、Facebook 等),少数人可能仍然代表大量用户,对于我们其他人来说,复杂性是值得的(他们有资源和专业知识来处理它),我的建议不要分片,而是在 HTTP/2 等新协议变得普遍时(就像现在一样!)升级到新协议,否则会降低复杂性。

    【讨论】:

      猜你喜欢
      • 2011-10-13
      • 2010-11-24
      • 2014-06-17
      • 2010-12-17
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      相关资源
      最近更新 更多