Как очистить кеш браузера при нажатии кнопки браузера в MVC4?

Я знаю, что это популярный вопрос в stackoverflow. Я прошел один и тот же вопрос, и я не могу найти правильный ответ для меня. Это мой controller выхода. Результат действия

[Authorize] public ActionResult LogOut(User filterContext) { Session.Clear(); Session.Abandon(); Session.RemoveAll(); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1)); Response.Cache.SetNoStore(); FormsAuthentication.SignOut(); return RedirectToAction("Home", true); } 

Это не сработало для меня. Я также попытался добавить –

ни одна из них не разрешила мою проблему.

    Проблема с вашим подходом заключается в том, что вы устанавливаете его там, где уже слишком поздно, чтобы MVC применил его. Следующие три строки вашего кода должны быть помещены в метод, показывающий представление (следовательно, страницу), которое вы не хотите показывать.

     Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1)); Response.Cache.SetNoStore(); 

    Если вы хотите применить поведение «no cache on browser back» на всех страницах, вы должны поместить его в global.asax.

     protected void Application_BeginRequest() { Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1)); Response.Cache.SetNoStore(); } 

    Просто установите выходной кеш на действие. Я использовал этот подход во многих проектах:

     [HttpGet, OutputCache(NoStore = true, Duration = 1)] public ActionResult Welcome() { return View(); } 

    Вышеприведенный атрибут будет в основном инструктировать браузеру получать новую копию страницы из действия вашего controllerа, если пользователь переводит назад / вперед к вашему представлению.

    Вы также можете определить свое кеширование в файле web.config и использовать его вместе с этим атрибутом, чтобы избежать повторения. См. Здесь

    Давайте будем гением компьютера.