dynamic数据Express.JS的caching控制

如何在express.js中设置json响应中的cach-controll策略? 我的JSON响应根本没有改变,所以我想积极caching。 我发现如何对静态文件进行caching,但找不到如何在dynamic数据上进行caching。

最简单的方法是在任何JSON输出之前添加对res.setHeader()的调用。 在那里,你可以指定设置caching控制头,它会相应的caching。

 res.setHeader('Cache-Control', 'public, max-age=31557600'); // one year 

另一种方法是简单地将res属性设置为路由中的JSON响应,然后使用回退中间件(在error handling之前)来呈现并发送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.setHeader('Cache-Control', 'public, max-age=31557600'); res.json(res.JSONResponse); })