我已经设置了像这样提供的静态文件:
app.use(express.static(__dirname));
app.get('/', function(req, res) {
res.locals.message = 'Hello!';
res.render('index');
});
这似乎有效。这是通常的做法吗?
我有点困惑,如果static
在同一个端口上启动自己的服务器,如果是这样的话,这是一个好主意吗?
答案 0 :(得分:6)
如果您不需要高性能或特定的东西,这是标准方法。它不会启动单独的服务器,而是在请求到来时,它会检查路径以查看是否可以从您添加为静态的其中一个目录中提供具有指定名称的文件。
您可以为表现做两件事。第一个是一个简单的修复 - 如果你在其余的处理程序之前添加express.static
,每个请求都会产生一个磁盘读取,以检查是否存在具有该名称的文件。您可以通过将静态中间件放在最后(或将其挂在前缀:例如/static
)来解决此问题。
如果这对您不够好,标准解决方案是将高性能服务器放在node.js服务器前面。一个例子是nginx服务器,它针对提供静态文件进行了高度优化。它可以处理静态文件的请求,并将其余部分重定向到您的节点应用程序。