admin管理员组

文章数量:1312795

I want to clear the browser cache in MVC application.

I added the below code on my .cshtml page and its working for IE and 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);

I am looking for a solution which will work on chrome as well.

I want to clear the browser cache in MVC application.

I added the below code on my .cshtml page and its working for IE and 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);

I am looking for a solution which will work on chrome as well.

Share Improve this question asked Apr 19, 2013 at 9:23 SanoopSanoop 1191 gold badge2 silver badges11 bronze badges 2
  • Are the requests being cached ajax requests? – Beez Commented Apr 23, 2013 at 12:48
  • The above solution did NOT work for me in IE. – Obi Wan Commented Oct 15, 2013 at 13:33
Add a ment  | 

2 Answers 2

Reset to default 4

Use the Following Attribute:

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;
    }
 }

}

Simply add this to your base controller :

[NoCache]
public BaseController: Controller

This worked for me when cachebusting ajax requests on Chrome.

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");

本文标签: javascriptHow to clear browser cache in MVC applicationStack Overflow