在路由器/控制器级别设置maxAge for express

时间:2015-09-29 12:42:30

标签: node.js caching express routes cache-control

我希望快速路由器定义的所有路由都具有与资产中间件不同的max-age

对于快速静态中间件,我使用。

为所有请求设置max-age标头
app.use(express.static('public', { maxAge: '1d' }));

我尝试在应用级别设置此功能:

express.use(function (req, res, next) {
  res.setHeader('Cache-Control', 'public, max-age=86400');
  return next();
});

虽然这适用于所有路由,但它也会覆盖静态中间件的max-age

1 个答案:

答案 0 :(得分:1)

如评论中所述,静态中间件是在设置cache-control标头的中间件之后定义的。由于 serve-static模块不会覆盖已存在的标头,因此静态文件的maxAge值不会反映在标头中。

要解决此问题,可以在其他中间件之前移动静态中间件。因此,永远不会到达静态文件的其他中间件。