Программно очистить профиль кеша в ядре asp.net

Я настроил профиль кэша в моем основном веб-интерфейсе asp.net следующим образом:

services.AddMvc(options => {
     // Cache profile for lookup data will expire every 15 minutes.
     options.CacheProfiles.Add("LookupData", new CacheProfile() { Duration = 15 });    
});

Я использовал этот атрибут в верхней части моего "lookupsController", поскольку списки информации, возвращаемой в каждом методе, не будут регулярно меняться (хотя кэш-память автоматически истекает каждые 15 минут).

[ResponseCache(CacheProfileName = "LookupData")]
[Produces("application/json")]
[Route("api/Lookups")]
public class LookupsController : Controller
{
    ...
}

У меня есть другой контроллер администратора, который позволяет пользователям добавлять и удалять элементы в списке контроллеров поиска, это случается не часто, но когда это происходит, я хочу программно принудительно сбросить профиль кэша и заставить последующие веб-запросы получать последние, а не чем сохранение устаревшего кэшированного списка данных.

Как мне добиться сброса кеша программно? - Затем я могу добавить этот код в методы моего администратора, чтобы принудительно сбросить кэш. Кто-нибудь должен был сделать это раньше?

1 ответ

Решение

Вы не можете действительно очистить этот кеш, потому что это не сервер, а клиентский кеш. ResponseCache Атрибут просто установит определенные заголовки в ответ. Упрощенное описание того, как это работает: браузер (или любой промежуточный прокси-сервер), отправляющий запрос к вашему API, замечает эти заголовки ответа, видит, что этот ответ действителен в течение 15 минут, и поэтому не будет повторять этот запрос в течение следующих 15 минут, вместо этого, взяв его у своего локальный кеш. Поскольку вы не можете контролировать этот локальный кеш - вы не можете его очистить.

Другие вопросы по тегам