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