大量图片-HTTP / 1.1与HTTP / 2?

时间:2019-03-01 08:24:51

标签: image http request http2 http-1.1

我要编写的程序需要下载大量的高清图像。该程序的想法是将所有内容都下载到一个HTTP请求中(无法将所有内容都归档到一个文件中)。因此,程序将立即从服务器请求一个图像。我发现HTTP / 2可以提供帮助,因为它支持多路复用技术。所有HTTP请求将在一个TCP连接上执行。我发现该网站上的统计数据令人鼓舞:https://www.tunetheweb.com/blog/http-versus-https-versus-http2/。提出的下载360图片的测试表明HTTP / 1.1和HTTP / 2之间存在巨大差异。我开始通过本教程https://helgeklein.com/blog/2018/11/enabling-http-2-in-apache-on-ubuntu-18-04/逐步配置Apache服务器(v。2.4.29)。如果下载约300张大小约为1MB的图像,则这两个HTTP协议版本之间的差异可以忽略不计。测试是在HTML文件上运行的,该文件包含带有链接到存储在同一服务器上的图像的链接的标签。

HTTP/1.1 Example

HTTP/2 Example

HTTP请求的大小仅相差0.1MB,并且下载时间更长。在各种浏览器(Google Chrome,Opera,Firefox)上重新运行测试,结果总是相似–协议的更改带来了微不足道的收益。我还尝试使用“ HTTP Server Push”技术,但这也无济于事。

在某些问题上使用HTTP / 2协议是否是一个好步骤?服务器配置是否错误?测试环境是否构建良好?

1 个答案:

答案 0 :(得分:1)

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

HTTP / 2通过允许通过multiplexing近乎并行地进行多次下载,可以更好地利用网络。对于具有大量小带宽请求的站点,这可能会带来巨大的不同。之所以这样,是因为在HTTP / 1.1下,TCP连接通常会长时间闲置,因为小的请求会在客户端和服务器之间来回传输,因此您不会充分利用可用带宽。 HTTP / 2对其进行了修复,以更好地利用带宽。

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

实际上,HTTP / 2可以在诸如您这样的情况下对您不利,因为可以并行下载大约100个资源,获得带宽的1/100,因此在HTTP / 1.1下可以分100次而不是6次下载。这意味着可能会有较长的延迟,然后显示100张图像,这时您可能希望依次下载图像并缓慢滴入。因此,Chrome会优先考虑优先级,而Firefox会以并行方式进行更多工作。我不知道您的应用程序做什么。

无耻的插件,但实际上我已经出版了一本书,如果您想了解更多详细信息,请访问https://www.manning.com/books/http2-in-action。更便宜的价格请参阅我的网站顶部的折扣代码!

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