使用 HTTP 字节范围标头加速下载

inc*_*nt1 5 ruby performance http download

有人有过在多个并行请求中使用 HTTP 字节范围来加速下载的经验吗?

我有一个应用程序需要从网络服务下载相当大的图像(1MB +),然后将修改后的文件(调整大小和裁剪)发送到浏览器。这些图像有很多,因此缓存很可能无效 - 即缓存很可能是空的。在这种情况下,我们在等待图像下载时遇到了一些相当大的延迟时间,500 m/s +,这超过了我们应用程序总响应时间的 60%。

我想知道是否可以通过使用一组并行的 HTTP Range 请求来加速这些图像的下载,例如每个线程下载 100kb 的数据,并将响应连接回一个完整的文件。

那里有人有此类事情的经验吗?额外下载的开销是否会抵消速度的提高,或者这种技术实际上可能有效吗?该应用程序是用 ruby​​ 编写的,但任何语言的经验/示例都会有所帮助。

有关设置的一些细节:

  • 该服务没有带宽或连接限制(它属于我的公司)
  • 预先生成所有裁剪和调整大小的图像很困难,有数以百万计的图像有很多潜在的排列
  • 很难将应用程序托管在与图像磁盘盒相同的硬件上(政治!)

谢谢

the*_*Man 0

我已经为您从中提取图像的地方编写了后端和服务。每个网站都是不同的,因此基于我所做的详细信息可能不适用于您想要做的事情。

这是我的想法:

  • 如果您与要从中提取图像的公司签订了服务协议(您应该这样做,因为您有相当高的带宽需求),然后预处理他们的图像目录并将缩略图存储在本地,作为数据库 blob 或作为磁盘上的文件包含文件路径的数据库。
  • 该服务不是已经提供了缩略图形式的图像吗?他们也不会发送全尺寸的图像到某人的浏览器......除非他们疯狂或虐待狂并且他们的用户疯狂和受虐狂。我们将图像预处理为三到四种不同的缩略图大小,因此提供您想要做的事情是微不足道的。
  • 如果您的请求是他们所期望的,那么他们应该有一个 API 或至少一些资源(程序员)来帮助您以最快的方式访问图像。他们实际上应该有一个专门用于此目的的主机。

作为一名摄影师,我还需要提及的是,您所做的事情可能存在版权和/或服务条款问题,因此请咨询律师和您正在访问的网站,确保您光明正大。不要假设一切都好,要知道一切都好。版权法不符合公众对版权的概念,因此提前聘请律师确实很有教育意义,而且会给您一种脚踏实地的良好感觉。如果您已经与某人交谈过,那么您就会知道我在说什么。