Очистить перед входом
Для моего приложения я хочу очистить кеш перед регистрацией. Однако, если кто-то входит в систему с другой учетной записью, я хочу очистить кэш, чтобы страница обновлялась и не сохраняла значения предыдущего пользователя.
Как мне это сделать в C#?
3 ответа
Вы не можете написать код для очистки кэша браузера клиента. Все, что вы можете сделать, это установить политику кэширования данных, когда вы отправляете дату в браузер.
Например, если у вас изначально есть файл изображения, срок действия которого установлен на полночь, когда браузер получает его, браузер не удалит файл из своего кэша до полуночи. Если вам необходимо немедленно принудительно заставить браузер извлечь другую версию файла, URI должен измениться, т. Е. Переименовать файл в новое (версия 2) имя.
Вы можете управлять только политикой кэширования элемента, отправляемого браузеру (или прокси-серверу-посреднику, или обоим). Браузер может игнорировать политику (если он хочет быть действительно плохим браузером), но вы НЕ МОЖЕТЕ отправлять что-либо, что очистит существующий кеш браузера.
Политика (в заголовке http) задает такие вещи, как время истечения (GMT), относительное время (т. Е. Длительность кэша), а также директивы без кэширования. Вы можете установить это для кэша браузера (или прокси и общего кэша). Но как только он пройдет по проводам, вы не сможете его очистить.
ADDED
Мне понадобилось время, чтобы найти эту статью, объясняющую, как работает кэширование в браузере. Проще понять, чем W3C объяснение кеширования браузера
Создать if condition
проверить вход в аккаунты. Затем используйте код в этой ссылке, чтобы очистить кеш, если он удовлетворяет условию.
Используя этот код, вы можете очистить кеш браузера.
Вы также можете использовать его на LogOut
вашего сайта вместо login
,
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Или вы можете сделать это так
/questions/14680752/ochistka-kesha-stranits-v-aspnet/14680755#14680755
Вы можете определить кеш этим способом
HttpContextBase httpContext = filterContext.HttpContext; httpContext.Response.AddCacheItemDependency("страница");
и настроить кеш при входе
protected void Application_Start()
{
HttpRuntime.Cache.Insert("Pages", DateTime.Now);
}
и очистить кеш при выходе
HttpRuntime.Cache.Insert("Pages", DateTime.Now);
больше деталей