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

时间:2018-04-18 19:25:19

标签: javascript multithreading download file-writing

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

到目前为止,我发现的最佳方法是将所有块下载并填充到localStorage中,然后将其下载为blob,但我担心本地存储大量数据的软限制(以及将所有数据拼接在一起时该方法的表现)。

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

非常感谢!

1 个答案:

答案 0 :(得分:0)

一个不能。浏览器有意限制与网站的连接数。要解决当今浏览器的这一限制,需要使用插件或其他方法来逃脱浏览器沙箱。

更糟糕的是,由于缺乏直接的文件系统访问权限,因此必须缓存多次下载的数据,然后将其重新组装到最终文件中,而不是让多个编写者写入同一文件(并让操作系统缓存进行优化)

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