Программно очистить профиль кеша в ядре 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 минут, вместо этого, взяв его у своего локальный кеш. Поскольку вы не можете контролировать этот локальный кеш - вы не можете его очистить.