使用express/nodejs提供静态文件服务

3
我已经设置了静态文件的服务方式如下:

我已将静态文件设置为按照以下方式提供服务:

app.use(express.static(__dirname));

app.get('/', function(req, res) {
    res.locals.message = 'Hello!';
    res.render('index');
});

这似乎是有效的。这通常是如何完成的吗? 我有点困惑,不确定 static 是否在同一端口上启动自己的服务器,如果是这样,这是一个好主意吗?

1个回答

6
这是一种标准的方式,如果你不需要高性能或者其他特定需求。它不会启动一个单独的服务器,而是在请求到来时检查路径,看是否可以从添加为静态目录之一的文件中提供指定名称的文件。
你可以做两件事来提高性能。第一种方法很容易解决——如果你在其余处理程序之前添加express.static,则每个请求都会产生磁盘读取,以检查该名称的文件是否存在。你可以通过将静态中间件放在最后(或通过挂载到前缀如:/static)来解决这个问题。
如果这对你来说还不够好,标准解决方案是在你的node.js服务器前面放置一个高性能服务器。一个例子就是nginx服务器,它高度优化用于服务静态文件。它可以处理静态文件的请求并将其余请求重定向到你的node应用程序。

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