我们正在使用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中的文件扩展名,那么静态中间件应该会减少请求次数,甚至可能会显著减少。此外,也许像dust
或jade
这样的模板引擎可能会有所帮助?它将允许您使用res.render
fn.
问题是,当使用
时,我看到请求时间增加了:res.sendfile(somepath +'/some.html');
因为express在提供文件之前会通过它的regex路径解析中间件传递它。如果你有大量的路由,这也可能会减慢请求时间。
希望有帮助!