禁用整个ASP.NET网站的浏览器缓存

禁用整个ASP.NET网站的浏览器缓存

我正在寻找一种方法来禁用浏览器缓存整个ASP.NETMVC网站

我发现了以下方法:

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

还有一个元标记方法(它对我不起作用,因为一些MVC操作通过Ajax发送部分HTML/JSON,而没有Head,meta标记)。

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

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


慕哥9229398
浏览 711回答 3
3回答

跃然一笑

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进行路由-所以假设您可以弹出后面的代码。

泛舟湖上清波郎朗

创建从IActionFilter继承的类。public&nbsp;class&nbsp;NoCacheAttribute&nbsp;:&nbsp;ActionFilterAttribute{&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;void&nbsp;OnResultExecuting(ResultExecutingContext&nbsp;filterContext) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filterContext.HttpContext.Response.Cache.SetNoStore(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.OnResultExecuting(filterContext); &nbsp;&nbsp;&nbsp;&nbsp;}}然后把属性放在需要的地方.。[NoCache][HandleError]public&nbsp;class&nbsp;AccountController&nbsp;:&nbsp;Controller{ &nbsp;&nbsp;&nbsp;&nbsp;[NoCache] &nbsp;&nbsp;&nbsp;&nbsp;[Authorize] &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ActionResult&nbsp;ChangePassword() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;View(); &nbsp;&nbsp;&nbsp;&nbsp;}}

幕布斯7119047

与其使用你自己的东西,不如简单地使用为你提供的东西。如前所述,不要禁用所有的缓存。例如,应该缓存ASP.NETMVC中大量使用的jQuery脚本。实际上,理想情况下,您应该使用CDN但我的观点是,应该缓存一些内容。我发现这里最有效的方法是使用一个类,而不是到处撒[OutputCache]:[System.Web.Mvc.OutputCache(NoStore&nbsp;=&nbsp;true,&nbsp;Duration&nbsp;=&nbsp;0,&nbsp;VaryByParam&nbsp;=&nbsp;"*")]public&nbsp;class&nbsp;NoCacheController&nbsp;&nbsp;:&nbsp;Controller{}您希望禁用缓存的所有控制器,然后从该控制器继承。如果需要覆盖NoCacheController类中的默认值,只需在操作方法上指定缓存设置,操作方法上的设置将优先。[HttpGet][OutputCache(NoStore&nbsp;=&nbsp;true,&nbsp;Duration&nbsp;=&nbsp;60,&nbsp;VaryByParam&nbsp;=&nbsp;"*")]public&nbsp;ViewResult&nbsp;Index(){ &nbsp;&nbsp;...}
打开App,查看更多内容
随时随地看视频慕课网APP