我在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>
答案 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}}
希望它有所帮助。祝你好运。