Мой бэкэнд делает запросы к стороннему REST API. Я хочу кешировать запросы, чтобы не превышать ограничения по скорости. Однако сторонний API возвращает заголовки, которые инструктируют мой уровень кэширования (совместимый с RFC 7234) не кэшировать. Есть ли какой-либо совместимый со стандартами способ проинструктировать мой уровень кэширования игнорировать директивы, указанные в ответе?
Мой бэкэнд находится в Node.js, и я пробовал слой кэширования cacheable-request . Я делаю запросы с заголовком Cache-Control: public, max-stale=900
с целью предоставления устаревших данных в течение 15 минут. Это работает, если я вызываю API, который не возвращает связанных с кэшем заголовков ответов. Однако настоящий сторонний API возвращает следующие заголовки:
cache-control: no-store, no-cache, must-revalidate
expires: Thu, 01 Jan 1970 00:00:00 UTC
date: Wed, 12 Jun 2019 13:53:07 GMT
pragma: no-cache
vary: Accept-Encoding
И это, кажется, препятствует тому, чтобы мой слой кэширования включился.
Решение должно быть избыточным и способным к развертыванию в Kubernetes. Я в порядке, обслуживаю устаревшие данные до тех пор, пока могу аннулировать их всякий раз, когда пользователи совершают мутации или я получаю перехват событий от стороннего производителя. Я ожидаю найти решение, которое является достаточно общим и не требует от меня подлинной репликации и сохранения сторонней структуры данных в моем собственном бэкэнде.