19

我有一个 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 缓存命中。

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

4

1 回答 1

1
  • 首先将 .app.use(express.compress());作为第一个中间件,记住中间件存在于 FIFO 堆栈中......
  • static部分放在会话部分之前,更好的是,将它们分成单独的路由(/app - 带有cookie,会话和bodyParser,/static - 没有)
  • 哦,忘记staticCache它已弃用且与 不兼容static,如果您想要更成熟的静态服务组件使用st
于 2014-05-24T07:13:02.010 回答