我想在MVC应用程序中清除浏览器缓存。
我在.cshtml页面上添加了以下代码,并为IE和Firefox工作。
Response.ExpiresAbsolute = DateTime.Now;
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.Buffer = true;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow);
Response.Cache.SetNoStore();
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
我正在寻找一种适用于Chrome的解决方案。
答案 0 :(得分:4)
使用以下属性:
public class NoCacheAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
if (filterContext == null) throw new ArgumentNullException("filterContext");
var cache = GetCache(filterContext);
cache.SetExpires(DateTime.UtcNow.AddDays(-1));
cache.SetValidUntilExpires(false);
cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
cache.SetCacheability(HttpCacheability.NoCache);
cache.SetNoStore();
base.OnResultExecuting(filterContext);
}
/// <summary>
/// Get the reponse cache
/// </summary>
/// <param name="filterContext"></param>
/// <returns></returns>
protected virtual HttpCachePolicyBase GetCache(ResultExecutingContext filterContext)
{
return filterContext.HttpContext.Response.Cache;
}
}
}
只需将其添加到您的基本控制器:
[NoCache]
public BaseController: Controller
答案 1 :(得分:0)
当我在Chrome上缓存ajax请求时,这对我有用。
Response.AddHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
Response.AddHeader("Expires", "Fri, 01 Jan 1990 00:00:00 GMT");
Response.AddHeader("Pragma", "no-cache");