首页 > Web开发 > 详细

.net mvc禁用浏览器缓存

时间:2016-06-06 12:02:02      阅读:240      评论:0      收藏:0      [点我收藏+]

我正在寻找方法来禁用 整个 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禁用浏览器缓存

原文:http://www.cnblogs.com/qinge/p/5563188.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!