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

Bil*_*ill 19 connect node.js express

我有一个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
Run Code Online (Sandbox Code Playgroud)

使用此配置,YSlow报告我的.css和.js文件未压缩,如果不清除浏览器并多次刷新页面,我无法获得缓存命中.我还尝试在staticCache中间件中输入一个调试语句来报告缓存命中并运行ab -n 10000 -c 500显示0缓存命中.

显然我做错了(我猜测订单或选项搞砸了)但我无法弄清楚它是什么.有没有人有这三个中间件正常工作的工作示例?

Ref*_*ann 1

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