使用static(),staticCache()和compress()node.js连接中间件

我有一个Express 3.0应用程序,我试图使用static()staticCache()compress()中间件来服务和压缩我的静态文件。 这是我目前的app.configure()函数:

  app.configure(function() { app.use(express.favicon(__dirname + '/public/favicon.ico', {maxAge: 86400000})); app.use(express.bodyParser()); app.use(express.cookieParser('foo')); app.set('views', __dirname + '/views'); app.engine('.html', mustache({cache: true}).render); app.use(express.session({ store: sessionStore, secret: 'foo'})); app.use(express.staticCache()); app.use(express.static(__dirname + '/public', {maxAge: 86400000})); app.use(express.compress()); }); // routes are loaded here 

有了这个configuration,YSlow报告我的.css和.js文件没有被压缩,并且我无法清除浏览器并多次刷新页面,导致caching命中。 我也尝试在staticCache中间件中放入debugging语句来报告caching命中并运行ab -n 10000 -c 500显示0caching命中。

显然我做错了什么(我猜的顺序或选项搞砸了),但我不明白它是什么。 任何人有这三个中间件一起正常工作的工作示例?

       

网上收集的解决方案 "使用static(),staticCache()和compress()node.js连接中间件"

  • app.use(express.compress()); 作为第一个中间件,请记住居于FIFO堆栈的中间件…
  • static部分放在会话部分之前,更好的办法是把它们分成不同的路由(/ app – 用cookies,session和bodyParser,/ static – 没有)
  • staticCache ,并忘记staticCache它已被弃用,并与static不兼容,如果你想要一个更成熟的静态服务组件使用st