如何在json响应中的express.js中设置cach-controll策略?我的json响应完全没有改变,所以我想积极地缓存它。我发现如何对静态文件进行缓存,但无法找到如何在动态数据上进行缓存。
答案 0 :(得分:36)
不优雅的方法是在任何JSON输出之前简单地添加对res.set()
的调用。在那里,您可以指定设置缓存控制标头,它将相应地缓存。
res.set('Cache-Control', 'public, max-age=31557600'); // one year
另一种方法是在路由中简单地将res
属性设置为JSON响应,然后使用回退中间件(在错误处理之前)来呈现和发送JSON。
app.get('/something.json', function (req, res, next) {
res.JSONResponse = { 'hello': 'world' };
next(); // important!
});
// ...
// Before your error handling middleware:
app.use(function (req, res, next) {
if (! ('JSONResponse' in res) ) {
return next();
}
res.set('Cache-Control', 'public, max-age=31557600');
res.json(res.JSONResponse);
})
修改:针对Express v4从res.setHeader
更改为res.set
答案 1 :(得分:0)
res.set('Cache-Control','public,max-age = 31557600,s-maxage = 31557600'); // 1年