Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在MVC4中清除浏览器后退按钮上的浏览器缓存?_C#_Asp.net Mvc_Asp.net Mvc 4_Browser Cache - Fatal编程技术网

C# 如何在MVC4中清除浏览器后退按钮上的浏览器缓存?

C# 如何在MVC4中清除浏览器后退按钮上的浏览器缓存?,c#,asp.net-mvc,asp.net-mvc-4,browser-cache,C#,Asp.net Mvc,Asp.net Mvc 4,Browser Cache,我知道这是stackoverflow中的一个流行问题。我已经经历了所有相同的问题,我无法找到正确的答案。 这是我的注销控制器操作结果 [Authorize] public ActionResult LogOut(User filterContext) { Session.Clear(); Session.Abandon(); Session.RemoveAll(); Response.Cache

我知道这是stackoverflow中的一个流行问题。我已经经历了所有相同的问题,我无法找到正确的答案。 这是我的注销控制器操作结果

    [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();
如果要在所有页面上应用“返回浏览器时无缓存”行为,则应将其放在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();
}
如果用户向后/向前导航到您的视图,上述属性基本上将指示浏览器从控制器操作获取页面的新副本


您还可以在web.config中定义缓存,并与此属性结合使用,以避免重复。请参见返回到哪里?在任何地方或者仅仅是一个具体的行动?为什么这一点没有被接受,为什么没有更多的投票?经过数小时的谷歌搜索,这是唯一一个可以在所有浏览器上运行的解决方案。先生,你是我今天的英雄。这将影响MVC应用程序中捆绑包的概念,js&css文件不会被缓存,每次重新加载或返回js&css文件都会从服务器而不是浏览器缓存中再次加载。这确实帮助了我。如果您想缓存静态文件/图像等,但不想缓存页面(视图),此解决方案最适合这种情况。