node.js - Node.js 对 "classic"风格的网站有用吗?

标签 node.js

我正在考虑使用 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/

相关文章:

javascript - 在 Javascript 中将多个 Promise 插入数组时处理单个错误

node.js - EasyRTC - 更改相机源

javascript - Node.js - 需要没有分配

node.js - 我如何从管理员帐户切换到另一个用户帐户

node.js - 运行 Heroku Node.js 入门示例时遇到错误 - 数据库部分

mysql - 使用后释放连接,Node.js 连接池

javascript - 使用 Mocha 测试 javascript - 如何使用 console.log 调试测试?

javascript - 在 Express 中的 app.listen 之前等待异步函数完成

javascript - 使用 Node.js 发送 POST 请求并获取数据

javascript - 从nodejs提供html时,js文件没有被加载