代码之家  ›  专栏  ›  技术社区  ›  Nathan Verrilli

如何在客户端javascript中多线程下载

  •  0
  • Nathan Verrilli  · 技术社区  · 6 年前

    我有非常大(50-500GB)的文件可供下载,而浏览器引擎(edge、chrome或firefox)提供的单线程下载是一种非常缓慢的用户体验。我曾希望通过使用多线程下载文件块来加快速度,但我一直遇到浏览器沙盒问题。

    到目前为止,我发现最好的方法是下载所有数据块并将其塞入本地存储,然后将其作为blob下载,但我担心本地存储这么多数据的软限制(以及将所有数据拼接在一起时该方法的性能)。

    理想情况下,已经有人解决了这个问题(而我的搜索技能还不能胜任找到它的任务)。我唯一发现的是服务器端解决方案(可以直接访问文件系统)。或者,我希望另一种方法不太可能破坏浏览器安全或限制对话框,而更可能提供我的用户所寻求的性能。

    非常感谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   Nathan Verrilli    6 年前

    一个人不能。浏览器有意限制与网站的连接数量。为了在今天的浏览器中绕过这一限制,需要一个插件或其他方法来避开浏览器沙盒。

    更糟糕的是,由于缺乏直接的文件系统访问,来自多个下载的数据必须被缓存,然后重新组装到最终文件中,而不是让多个写入程序写入同一个文件(并让操作系统缓存处理优化)。

    TLDR:虽然可以有多个下载线程,但最大下载线程数很低(4),并且必须重复处理数据。 使用插件或实际下载程序,如FTP或Curl。