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"/>

Żadne z nich nie rozwiązało mojego problemu.
Author: Sandy, 2013-05-02

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();
}
 49
Author: von v.,
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

 13
Author: MarkG,
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