【问题标题】:CDN-server with http/1.1 vs. webserver with http/2带有 http/1.1 的 CDN 服务器与带有 http/2 的网络服务器
【发布时间】:2019-09-25 02:31:08
【问题描述】:

我有一个带有 http/2(中速)的托管网络服务器,另外我在一个只有 http/1.1 的快速 CDN 服务器上有一个空间。 是否建议从 CDN 加载一些资源,还是应该因为 http/2 而只使用网络服务器? 由于 http/1.1,从 CDN 加载太多资源可能会成为瓶颈? 希望得到一些提示......

【问题讨论】:

    标签: http2 http-1.1


    【解决方案1】:

    你需要测试。这实际上取决于您的应用、您的用户和您的服务器。

    在 HTTP/1.1 下,您只能使用 6 connections to a domain。因此,在单独的域(例如 static.example.com)上托管内容或从 CDN 加载是一种将限制增加到超过 6 个的方法。这些单独的域通常也没有 cookie,因为它们位于单独的域上,这对性能有好处和安全。最后,如果从 code.jquery.com 加载 jQuery,那么您可能会受益于用户已经将其下载到另一个站点,因此请完全保存该下载(尽管库和 CDN 的版本数量有可能已经拥有一个常用库下载并在浏览器缓存中我认为是有问题的)。

    但是,单独的域需要设置单独的连接。这意味着 DNS 查找、TCP 连接以及通常的 HTTPS 握手。这一切都需要时间,尤其是如果只下载一项资产(例如 jQuery),那么这些资产通常会占用将资产托管在单独站点上的任何好处!这实际上就是浏览器将连接数限制为 6 个的原因——超过此数量后,回报率会下降。因此,我质疑分片域的价值已经有一段时间了,人们不应该只是假设它们会更快。

    HTTP/2 旨在通过允许multiplexing 消除对单独连接的需求,从而解决对单独域(也称为分片域)的需求,从而有效地消除了 6 个“连接”的限制,但没有单独连接的缺点.它们还允许 HTTP 标头压缩,从而减少来回发送大型 cookie 的性能下降。

    所以从这个意义上说,我建议只从您的本地服务器提供所有内容。当然,不是每个人都会使用 HTTP/2,但 support is incredible strong 所以大多数用户都应该使用。

    但是,CDN 的另一个好处是它们通常是全球分布的。因此,世界另一端的用户可以连接到本地 CDN 服务器,而不是一路回到您的服务器。这有助于缩短连接时间(因为 TCP 握手和 HTTPS 握手基于较短的距离)并且内容也可以在那里缓存。虽然如果 CDN 必须为大量内容返回源服务器,那么仍然存在延迟(尽管 TCP 和 HTTPS 设置的好处仍然存在)。

    所以从这个意义上说,我建议使用 CDN。但是,我会说通过此 CDN 放置所有内容,而不是像您建议的那样仅放置其中的一部分,但您是对的,HTTP/1.1 可能会限制它的有用性。这很奇怪,因为大多数商业 CDN 都支持 HTTP/2,而且您还说您有一个“CDN 服务器”(而不是服务器网络 - 复数)所以也许您的意思是一个静态域,而不是真正的 CDN?

    无论哪种方式,这一切都归结为测试,正如本答案开头所述,它实际上取决于您的应用、您的用户和您的服务器,这里没有一个真实、明确的答案。

    希望这能让您对要考虑的事情有所了解。如果您想了解更多,因为 Stack Overflow 确实不是其中的一些地方,而且这个答案已经足够长,那么我刚刚写了一本书,其中大部分时间都在讨论这一切:https://www.manning.com/books/http2-in-action

    【讨论】:

    • 感谢您提供非常全面的答案。许多好的提示!看来 http/2 带来了很多明显的优势,我将依赖托管的网络服务器。
    猜你喜欢
    • 2015-05-17
    • 2017-11-26
    • 2016-06-24
    • 1970-01-01
    • 2018-05-04
    • 2020-04-14
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    相关资源
    最近更新 更多