Кеш, который всегда возвращает немедленный ответ?
У меня есть веб-сервис, который требует времени, чтобы создать ответ, несмотря на то, что я настроен как можно лучше.
Мне бы хотелось, чтобы какой-то кэш находился перед службой, который всегда возвращал бы последнее известное значение из службы, но в то же время передавал запрос обратно службе, чтобы создать актуальный ответ для следующего запрос.
Я знаю об ограничениях, которые это накладывает на свежесть данных, но вы можете предположить, что я счастлив с этим жить.
Технологии, которые я использую в настоящее время, - это python uwsgi через nginx, но это не должно быть ограничением для любого решения, которое вы можете предложить.
седло
1 ответ
Предполагая, что вам нужен обратный прокси, вы можете использовать Varnish в режиме saint или squid с директивой stale-if-error.
Если вам нужен кэш в приложении, например, с использованием memcached, просто не полагайтесь на механизм истечения срока хранения - срок хранения в кешированном объекте array(cached_object=>object, expiry=>timestamp)
и реагируйте, если вы столкнетесь с устаревшим кешем: увеличьте срок действия до настоящего момента + немного времени (для предотвращения кучи - несколько процессов восстанавливают кеш параллельно), используйте устаревший кеш, инициализируйте обновление.