缓慢的静态文件服务与Node在Ubuntu上



我们正在使用Testem来提供一堆HTML文件(模板)。在后台,系统使用Express的"res.sendfile"方法将静态文件发送回客户端。在Mac机器上,这非常快——根据Chrome网络跟踪,每个文件1-2毫秒。然而,在Ubuntu机器上,它需要39毫秒。

这是在最新的稳定节点- 0.10.29上。系统正在使用Express 3.1.

有什么建议可能导致这种情况或我如何进一步诊断吗?

我通常使用:

直接提供静态文件
app.use( express.static(__dirname+'/public') );

中间件。静态文件将存储在

中。
/<app-path>/public

这将允许您访问/<app-path>/public/some.html:

http://yoursite.com/some.html

如果你把file.html放在/<app-path>/public/html/中,下面将解析:

http://yoursite.com/html/file.html
http://yoursite.com/public/html/file.html

如果期望的结果是有干净的url没有扩展,那么我的建议将不做。但是,如果您不介意url中的文件扩展名,那么静态中间件应该会减少请求次数,甚至可能会显著减少。此外,也许像dustjade这样的模板引擎可能会有所帮助?它将允许您使用res.render fn.

问题是,当使用

时,我看到请求时间增加了:
res.sendfile(somepath +'/some.html');

因为express在提供文件之前会通过它的regex路径解析中间件传递它。如果你有大量的路由,这也可能会减慢请求时间。

希望有帮助!

相关内容

  • 没有找到相关文章

最新更新