无法清除C#MVC缓存

时间:2018-01-19 11:03:32

标签: c# caching model-view-controller browser-cache

我在web.config文件中使用此设置,而我的客户端浏览器缓存了我的MVC控制器方法结果?怎么样和为什么?我的配置不针对cshtml或Razor视图。我现在可以做些什么来清除我的客户浏览器缓存?

<system.webServer>
<caching>
      <profiles>
        <add extension=".png" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
        <add extension=".gif" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
        <add extension=".jpg" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
        <add extension=".js" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
        <add extension=".css" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
      </profiles>
    </caching>
<httpProtocol allowKeepAlive="true">
      <customHeaders>
      <add name="Cache-Control" value="public, max-age=691200"/>
      </customHeaders>
</httpProtocol>

2 个答案:

答案 0 :(得分:0)

您可以以编程方式执行此操作,请尝试以下操作: 把它放在你的模型上:

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);
    }
}
and on your specific controller: e.g:

[NoCache]
[Authorize]
public ActionResult Home()
 {
     ////////...
}

代码来自: How to clear cache in specified controller in asp mvc?

答案 1 :(得分:-1)

一个解决方案是在项目中的.css,.js,.gif文件之后设置版本号。我知道这是对系统的巨大改变。这是您在客户端计算机上清除缓存的方法

像这样的东西

{{1}}

希望它有所帮助。祝你好运。