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

使用static()、staticCache()和compress()node.js连接中间件,node.js,express,connect,Node.js,Express,Connect,我有一个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()); ap

我有一个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
在这种配置下,YSlow报告说我的.css和.js文件没有被压缩,如果不清除浏览器并多次刷新页面,我就无法获得缓存命中。我还尝试在staticCache中间件中加入一个调试语句来报告缓存命中率,运行ab-n 10000-c 500显示0个缓存命中率

很明显,我做错了什么(我猜订单或选项搞乱了),但我不知道是什么。有没有人能举出这三个中间件一起正常工作的例子?

  • 首先放置
    app.use(express.compress())
    作为第一个中间件,请记住中间件位于FIFO堆栈中
  • static
    部分放在会话部分之前,更好的做法是将它们分成单独的路由(/app-带cookie、会话和bodyParser,/static-不带cookie)
  • 哦,如果您想使用更成熟的静态服务组件,那么就不要再考虑
    staticCache
    了,它已被弃用,并且与
    static
    不兼容