将 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.
要解决此问题,可以将 静态中间件移动到其他中间件 之前。因此,静态文件将永远无法访问其他中间件。
我希望 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.
要解决此问题,可以将 静态中间件移动到其他中间件 之前。因此,静态文件将永远无法访问其他中间件。