Подтвердить что ты не робот

Управление кешем для динамических данных Express.JS

Как можно настроить политику cach-controll в express.js на ответ json? Мой ответ json вообще не меняется, поэтому я хочу его аккуратно кэшировать. Я нашел, как делать кеширование на статических файлах, но не могу найти, как сделать это на динамических данных.

4b9b3361

Ответ 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