Мы используем ResponseCaching Middleware в ASP. NET Core v3.1 для конечных точек API. Мы работаем в среде с балансировкой нагрузки на AWS.
Вот пример использования атрибута ResponseCache
:
[ResponseCache(Duration = 86400, VaryByQueryKeys = new[] { "productId" })]
public async Task<IActionResult> Get(string productId) {
// ...
}
Кажется, это работает нормально.
Когда клиент хочет разрушить кеш, он просто отправляет HTTP-заголовок:
cache-control: no-cache;
Вот что я хочу проверить: у нас есть среда с балансировкой нагрузки на AWS , Если клиент сбрасывает кэш, как показано выше, это повлияет только на один экземпляр / узел на AWS, верно? Например, клиент-1 может отправить cache-control: no-cache
для сброса кэша, но спустя мгновение клиент-2 все еще может потенциально увидеть старые значения, если запрос клиента-2 направляется на сервер, отличный от сервера клиента-1. Это правильно?
Каково общее решение для кэширования в среде с балансировкой нагрузки, подобной этой? Должны ли мы использовать что-то вроде Redis или есть что-то на AWS?