.net mvc禁用浏览器缓存

Posted 秦少66

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net mvc禁用浏览器缓存相关的知识,希望对你有一定的参考价值。

我正在寻找方法来禁用 整个 ASP.Net MVC 网站 的浏览器缓存

我发现以下方法,

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Cache.SetNoStore();

此外元标记方法 (它不会为我工作,因为一些 MVC 操作发送部分 html/json 通过 ajax,无头,元标记)

<meta. http-equiv="PRAGMA" content="NO-CACHE">

但我正在寻找禁用整个网站的浏览器缓存的简单方法。

解决方法 1:

HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1))
HttpContext.Current.Response.Cache.SetValidUntilExpires(false)
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches)
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.Cache.SetNoStore()

所有请求获得第一次通过 default.aspx 都路由-因此假定您可以只弹出那里后面的代码中。

解决方法 2:

创建一个从 IActionFilter 继承的类。

public class NoCache : ActionFilterAttribute
{  
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
        filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();

        base.OnResultExecuting(filterContext);
    }
}

然后把属性在需要的地方 … …

[NoCache]
[HandleError]
public class AccountController : Controller
{
    [NoCache]
    [Authorize]
    public ActionResult ChangePassword()
    {
        return View();
    }
}

以上是关于.net mvc禁用浏览器缓存的主要内容,如果未能解决你的问题,请参考以下文章

在 MVC 3 中禁用局部视图上的缓存

如何禁用 ASP.NET 网站的所有的 浏览器缓存 ?

如何在 ASP.NET core rc2 中禁用浏览器缓存?

ASP.net MVC 代码片段问题中的 Jqgrid 实现

如何禁用该按钮的按钮和 Jquery 代码 - asp.net mvc-3

Internet Explorer 缓存 asp.net mvc ajax 结果