Как можно настроить политику cach-controll в express.js на ответ json? Мой ответ json вообще не меняется, поэтому я хочу его аккуратно кэшировать. Я нашел, как делать кеширование на статических файлах, но не могу найти, как сделать это на динамических данных.
Управление кешем для динамических данных Express.JS
Ответ 1
Не элегантный способ - просто добавить вызов res.set()
перед любым выводом JSON. Там вы можете указать, чтобы установить заголовок элемента управления кэшем, и он будет кешироваться соответствующим образом.
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);
})
Изменение: res.setHeader
с res.setHeader
на res.set
для Express v4
Ответ 2
Вы можете сделать это так, например:
res.set('Cache-Control', 'public, max-age=31557600, s-maxage=31557600'); // 1 year