HTTP/3 与 HTTP/2 的性能对比( 二 )


对于 15KB 的小型测试网页,HTTP/3 平均需要 443ms 加载,而 HTTP/2 则为 458ms 。但是,一旦我们将页面大小增加到 1MB,优势就会消失:HTTP/3 仅比当今网络上的 HTTP/2 慢一点,HTTP/3 加载花费 2.33 秒,而 HTTP/2 加载花费 2.30 秒 。

HTTP/3 与 HTTP/2 的性能对比

文章插图
 

HTTP/3 与 HTTP/2 的性能对比

文章插图
 

HTTP/3 与 HTTP/2 的性能对比

文章插图
 
基准测试很有意思,然而我们更想知道 HTTP/3 在现实世界中的表现 。
为进行衡量,我们希望有一个第三方可以像浏览器一样在我们的网络上加载网站 。WebPageTest 是一个通用框架,通过漂亮的瀑布图来展示页面加载时间 。为了分析后端,我们使用了自家的 Browser Insights 来捕获白屏时间 。然后,我们将这两部分数据通过自动化的方式结合在一起 。
作为测试用例,我们决定对公司博客进行性能监控 。我们在全球范围配置了 WebPageTest 实例,以同时通过 HTTP/2 和 HTTP/3 加载站点 。我们还启用了 HTTP/3 和 Browser Insight 。因此,每当我们的测试脚本检测到使用支持 HTTP/3 的浏览器访问该站点加载网页时,浏览器就会将报告数据返回 。清洗数据并与 HTTP/2 的报告数据进行比较 。
下图显示了真实页面( blog.cloudflare.com )的页面加载时间,以比较 HTTP/3 和 HTTP/2 的性能 。同时我们还从不同的地理位置进行了这些性能评估 。
HTTP/3 与 HTTP/2 的性能对比

文章插图
 
如上图所见,在北美,HTTP/3 性能仍落后于 HTTP/2 性能,性能差距平均水平约为 1-4%,在欧洲,亚洲和南美也得到类似结论 。我们怀疑这可能是由于拥塞算法不同所致:BBR v1 上的 HTTP/2 与 CUBIC 上的 HTTP/3 不同 。将来,我们将努力在两者上支持相同的拥塞算法,以实现更准确的性能对比 。
结论总体而言,我们很高兴一起参与推动这一标准的发展 。我们的实现效果很好,在某些情况下提供了更好的性能,并且在最坏的情况下性能也和 HTTP/2 相近 。随着标准的定稿,我们期待浏览器在主流版本中增加对 HTTP/3 的支持 。对我们来说,我们将继续支持最新的草案,同时寻找更多的方法,比如拥塞调整、优先级划分或者系统容量(CPU 和原始网络吞吐量),利用 HTTP/3 获得更好的性能 。

【HTTP/3 与 HTTP/2 的性能对比】


推荐阅读