Jak wyczyścić pamięć podręczną przeglądarki po kliknięciu przycisku Wstecz przeglądarki w MVC4?
Wiem, że jest to popularne pytanie w stackoverflow. Przeszedłem przez wszystkie te same pytania i nie jestem w stanie znaleźć właściwej odpowiedzi dla mnie. To jest mój wynik działania kontrolera wylogowania
[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);
}
Nie zadziałało na mnie.
Próbowałem też dodać -
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
2 answers
Problem z twoim podejściem polega na tym, że ustawiasz go tam, gdzie jest już za późno, aby MVC go zastosował. Poniższe trzy linie kodu powinny być umieszczone w metodzie, która pokazuje widok (w konsekwencji stronę), którego nie chcesz wyświetlać.
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
Jeśli chcesz zastosować zachowanie" no cache on browser back " na wszystkich stronach, powinieneś umieścić go w global.asax.
protected void Application_BeginRequest()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-02 12:01:07
Po prostu ustaw bufor wyjściowy na akcji. Stosowałem to podejście w wielu projektach:
[HttpGet, OutputCache(NoStore = true, Duration = 1)]
public ActionResult Welcome()
{
return View();
}
Powyższy atrybut zasadniczo poinstruuje przeglądarkę, aby uzyskała świeżą kopię strony z akcji kontrolera, jeśli użytkownik przejdzie do widoku wstecz / do przodu.
Możesz również zdefiniować buforowanie w sieci.config i użyj w połączeniu z tym atrybutem, aby uniknąć powtórzeń. Zobacz tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-04 04:26:34