我正在考虑使用 nodejs 制作一个非实时应用程序。例如,博客、论坛或图片板等网站。
我读到 nodejs 在用于异步作业时很好。所以我想知道当用于提供大量静态文件(如大图像、css 和 js 文件等)时,结果会是什么。
当发送一个文件(假设它是 2-3MB)时,整个服务器会被阻塞直到传输完成是真的吗?我还读到可以使用操作系统的 sendfile()
系统调用来完成这项工作。这样的话,Express支持吗?
最佳答案
不,这不是真的。您可以轻松发送大文件(远大于 2-3 MB)而不会阻塞。提示像这样阻塞 Node 事件循环的人根本不知道他们在做什么。
您不一定需要使用 Express 才能获得此行为。
也就是说,如果您想要的是文件服务器,则没有理由使用 NodeJS。只需将 Apache 指向一个目录,然后让它飞起来。为什么要重新发明轮子只是为了使用新的性感技术,当老忠实者做得很好时?
如果你想使用 node 作为一个简单的 http 服务器,我可以推荐非常简单的命令行模块。
https://npmjs.org/package/http-server
我没有看过模块的代码,但它可能没有针对大文件进行优化。在这种情况下,我们将大定义为不易缓存在内存中的文件(无论这对您的设置意味着什么)。如果您的用例需要更多优化(例如管道“大”文件),您可能仍然需要编写自己的模块,但这会让您很快上手,并且是在需要时用于一般开发的优秀实用程序快速提供一个目录。
关于node.js - Node.js 对 "classic"风格的网站有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153449/