Node.js 流 vs sendFile

11

我正在测试使用res.sendFile(src);fs.createReadStream(src).pipe(res);下载速度,但我没有看到太大的区别。哪个更好地提供文件服务?如果我有巨大的文件,使用流处理是否更好?


1
我可以向您推荐https://www.sitepoint.com/basics-node-js-streams/,以便更好地了解Node中的流是什么吗? - jruts
1个回答

22

我建议使用 res.sendFile()

实际上,res.sendFile() 将流传输到 res,因此在这方面它们基本相同。

然而,res.sendFile() 做了一些额外的事情,例如根据文件名设置适当的 HTTP Content-Type 头部,并且由于它在底层使用了 send 库,它可以(可能,我没有进行测试)处理部分响应并进行内容协商。


所以,即使在处理大文件时,如果我继续使用res.sendFile(),它也能很好地管理。 - Honchar Denys
1
@GoncharDenys,这应该不是问题。 - robertklep
你怎么知道res.sendFile()将流传输到res?我没有看到任何参考资料在文档中指示这一点。您能否详细说明您是如何知道的? - Tal Kohavy
2
@TalKohavy 看 Express 的源代码 :D 但也要有常识:Express 不会在提供文件之前先将整个文件读入内存。 - robertklep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接