我正在考虑使用Node.js制作非实时应用程序。例如,类似博客,论坛或图像面板的网站。

我已经阅读到nodejs在用于异步作业时很好。所以我想知道当用于提供大量静态文件(如大图像,css和js文件等)时的结果是什么。

是否确实在发送文件时(假设它为2-3MB)会阻塞整个服务器,直到传输完成?我还读到,可能可以使用操作系统的sendfile() syscall来完成此工作。在这种情况下,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/

10-09 09:55