将 express 的 maxAge 设置为 router/controller 级别

Set maxAge for express at router/controller level

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

对于快速静态中间件,我为所有使用的请求设置 max-age header。

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

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

要解决此问题,可以将 静态中间件移动到其他中间件 之前。因此,静态文件将永远无法访问其他中间件。