在Ubuntu上使用节点缓慢的静态文件服务

我们使用Testem来提供一堆HTML文件(模板)。 Testem使用Express的“res.sendfile”方法将静态文件发送回客户端。 在Mac机器上,速度非常快 – 根据Chromenetworking跟踪,每个文件需要1-2毫秒。 但是,在Ubuntu机器上,需要39ms。

这是最新的稳定节点 – 0.10.29。 Testem正在使用Express 3.1。

有什么build议可能会导致这种情况,或者我如何进一步诊断?

我通常直接使用下面的静态文件:

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,那么我的build议不会。 但是,如果您不介意在URL中进行文件扩展,那么静态中间件应该会减less请求时间,甚至可能会大大减less。 另外,也许像dustjade这样的模板引擎可能有帮助? 这将允许你使用res.render fn。

事情是,我看到使用时请求时间增加:

 res.sendfile(somepath +'/some.html'); 

因为expression式在传递文件之前会通过它的正则expression式pathparsing中间件。 如果你有很多的路线,这也可能会减慢请求时间。

希望有所帮助!