大量图像 - HTTP/1.1 vs HTTP/2?

Huge amount of images - HTTP/1.1 vs HTTP/2?

我要编写的程序需要下载大量的高清图片。该程序的想法是拒绝在一个 HTTP 请求中下载所有这些文件(不可能将所有文件归档到一个文件中)。因此,程序将一次从服务器请求一张图像。我发现 HTTP/2 可以提供帮助,因为它支持多路复用技术。所有请求 HTTP 将在一个 TCP 连接上执行。我发现该网站上的统计数据令人鼓舞:https://www.tunetheweb.com/blog/http-versus-https-versus-http2/. Presented tests of downloading 360 images show huge difference between HTTP/1.1 and HTTP/2. I started to configure my Apache server (v. 2.4.29) step-by-step with this tutorial: https://helgeklein.com/blog/2018/11/enabling-http-2-in-apache-on-ubuntu-18-04/。下载大约 300 张大小约为 1MB 的图像,这两个版本的 HTTP 协议之间的差异可以忽略不计。在 HTML 文件上进行了 运行 测试,该文件包含带有指向存储在同一服务器上的图像的超级链接的标签。

HTTP 请求的大小仅相差 0.1MB,下载时间更长。在各种浏览器(Google Chrome、Opera、Firefox)上重新进行了测试运行,结果总是相似的——协议的改变带来了微薄的利润。我也尝试使用“HTTP Server Push”技术,但它也没有帮助获得奖励结果。

在某些问题中使用 HTTP/2 协议是否是好的步骤?服务器配置不正确?测试环境搭建好吗?

您链接到的那个网站的作者 (https://www.tunetheweb.com/blog/http-versus-https-versus-http2/)。

HTTP/2 允许通过 近乎并行地进行多次下载,从而更好地利用网络。对于具有大量小带宽请求的站点,这可能会产生显着差异。这是因为 TCP 连接通常在 HTTP/1.1 下的大部分时间都处于空闲状态,因为小请求会在客户端和服务器之间来回移动,因此您没有充分利用可用带宽。 HTTP/2 修复该问题以更好地利用带宽。

对于受带宽限制的站点,HTTP/2 的影响较小,因为无论如何您都在充分利用带宽,因为在几次请求之后,带宽无论如何都会被充分利用。所以在 HTTP 层并没有真正的低效率。此外,多个 HTTP/1.1 连接的加速惩罚是值得的,因为您将更多地使用这些连接(不像在一个典型的网站上,当您打开第 6 个连接时,您通常只将它用于一个请求并再次关闭它)。

事实上 HTTP/2 在像您这样的情况下可能会对您不利,因为可以并行下载大约 100 个资源,占用带宽的 1/100,因此以 100 个为一组而不是 6 个为一组进行下载在 HTTP/1.1 下。这意味着可能会有很长的延迟,然后显示 100 张图像,这时您可能更喜欢按顺序下载图像,因此慢慢地滴入。 Chrome 出于这个原因按顺序排列优先级,而 Firefox 以并行方式工作。我不知道你的应用程序是做什么的。

无耻的插件,但我实际上已经出版了一本书,如果你想了解更多细节:https://www.manning.com/books/http2-in-action。查看我网站顶部的折扣代码以获得更便宜的价格!

P.S。我还质疑为什么要将大量高清图像发送到移动设备。似乎很浪费,尤其是在带宽和存储空间有限的移动设备上。至少您应该只在移动设备连接到 WiFi 时执行此操作,以减少您的用户产生高额费用的可能性。但这与您的问题有些无关(尽管使用较小的“预览图像”您可能不受带宽限制,因此可能会开始看到 HTTP/1.1 和 HTTP/2 之间的差异)。