在 Node.js 中下载文件的最快方法?
Fastest way to download files in Node.js?
我正在尝试从 Ubuntu 服务器上的外部网站下载 PDF 文件。
我的脚本是 运行 在 Node.js 中,重要的是尽快完成下载。
文件应该直接保存到磁盘上。我找到了两种实现此目的的方法...
使用 Node 的内置 http
库,如下例所示。
let file = fs.createWriteStream(path)
http.get(url, response => response.pipe(file))
使用 Node 的 child_process
库调用 wget
,如下所示。我也知道还有其他命令,例如 curl
也可以使用。
exec('wget -P ' + path + ' ' + url)
我知道这些示例可能是错误的编码,但仅供说明之用。我还读到人们通常更喜欢使用 Node 的 http
,因为它不使用任何外部库,所以更好。
不过,我只关心速度。我的问题是下载文件的最快方式是什么?
我一直在查看 https://www.hacksparrow.com/using-node-js-to-download-files.html,它表明 wget
是最快的解决方案,但我不确定这个结论是如何得出的。
此外,这些方法是否有任何缺点(除了速度)?还有其他我没有包括的方法吗?
谢谢!
由于网络和 io 的限制,没有理由根据 "speed" 选择您的情况的方法。下载速度和写入速度不受您的控制(以编程方式),只剩下各个方法本身的速度。由于网络和 io 具有最大速度,因此使用执行最快的方法并不重要,因为一旦您开始考虑下载多个文件,该方法最终将受到网络 and/or io 的限制。
使用对情况更有意义的方法。在您的情况下,如果您尝试使用节点下载文件,对我来说使用 node.js 比使用子进程 wget 更有意义。
我正在尝试从 Ubuntu 服务器上的外部网站下载 PDF 文件。
我的脚本是 运行 在 Node.js 中,重要的是尽快完成下载。
文件应该直接保存到磁盘上。我找到了两种实现此目的的方法...
使用 Node 的内置
http
库,如下例所示。let file = fs.createWriteStream(path) http.get(url, response => response.pipe(file))
使用 Node 的
child_process
库调用wget
,如下所示。我也知道还有其他命令,例如curl
也可以使用。exec('wget -P ' + path + ' ' + url)
我知道这些示例可能是错误的编码,但仅供说明之用。我还读到人们通常更喜欢使用 Node 的 http
,因为它不使用任何外部库,所以更好。
不过,我只关心速度。我的问题是下载文件的最快方式是什么?
我一直在查看 https://www.hacksparrow.com/using-node-js-to-download-files.html,它表明 wget
是最快的解决方案,但我不确定这个结论是如何得出的。
此外,这些方法是否有任何缺点(除了速度)?还有其他我没有包括的方法吗?
谢谢!
由于网络和 io 的限制,没有理由根据 "speed" 选择您的情况的方法。下载速度和写入速度不受您的控制(以编程方式),只剩下各个方法本身的速度。由于网络和 io 具有最大速度,因此使用执行最快的方法并不重要,因为一旦您开始考虑下载多个文件,该方法最终将受到网络 and/or io 的限制。
使用对情况更有意义的方法。在您的情况下,如果您尝试使用节点下载文件,对我来说使用 node.js 比使用子进程 wget 更有意义。