【发布时间】:2019-07-23 05:59:55
【问题描述】:
我要编写的程序需要下载大量的高清图像。该程序的想法是拒绝在一个 HTTP 请求中下载所有这些(不可能将它们全部归档到一个文件中)。出于这个原因,程序将一次从服务器请求一个图像。我发现 HTTP/2 可以提供帮助,因为它支持多路复用技术。所有 HTTP 请求都将在一个 TCP 连接上执行。我在这个网站上发现了令人鼓舞的统计数据:https://www.tunetheweb.com/blog/http-versus-https-versus-http2/。提交的 360 度图像下载测试显示 HTTP/1.1 和 HTTP/2 之间存在巨大差异。我开始使用本教程逐步配置我的 Apache 服务器 (v. 2.4.29):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 协议是好的步骤吗?是否配置服务器不正确?测试环境搭建好了吗?
【问题讨论】:
-
it’s impossible to archive all of them into one file为什么? -
@tkausl 因为我是否必须下载所有这些并不明显。有时我必须下载其中的 5 个,另一次全部下载,然后只下载一半。每次都归档听起来不是一个好计划
-
一个接一个地下载文件非常容易。但是如果你想只显示实际在视图中的图像,你应该使用延迟加载技术,像这样:appelsiini.net/projects/lazyload
-
@ZorgoZ 描述的 HTML 网站只是协议的简单测试。目标请求将从移动应用程序发送,主要是快速下载大量大图像。但不是渲染它们,而是拯救它们。我拒绝根据应用程序的请求动态下载它们(需要全部下载)
-
@Andret 好的,这让你的目标更清晰。流式传输它们呢?在流中连接服务器端并在客户端拆分。
标签: image http request http2 http-1.1