动态数据Express.JS的缓存控制

时间:2014-08-23 13:58:45

标签: node.js caching express

如何在json响应中的express.js中设置cach-controll策略?我的json响应完全没有改变,所以我想积极地缓存它。我发现如何对静态文件进行缓存,但无法找到如何在动态数据上进行缓存。

2 个答案:

答案 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年