繁体   English   中英

清除mvc3中的缓存。

[英]Clear cache in mvc3.

在此处输入图片说明

我正在使用Sql Server上传图像,并且上传的图像立即反映在下面的网格中。我的问题是,无论何时我更改或编辑图片时,图片在数据库中都已更改,但是网格显示了我已删除的前一张图像。并且我必须注销并再次lo-gin以查看更改。 有什么办法解决这个问题吗? 每次重新加载网格时,有什么方法可以清除缓存吗?

您可以尝试在下面的文章中编写自己的属性,例如[no-cache],并可以在控制器上使用它来防止缓存。

防止使用属性在ASP.NET MVC中缓存特定操作

http://dotnetnsqlcorner.blogspot.co.uk/2012/09/disable-caching-for-controller-action.html?m=1

要禁用客户端缓存,您还可以在操作结果上使用[outputcacheattattribute]。 下面的帖子可能会有所帮助。

[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)] 

如何在ASP.NET MVC中禁用客户端和代理缓存?

还有其他禁用缓存的方法,但是我想以上两种方法之一都可以完成这项工作。 希望这可以帮助

您可以将持续时间用于特定项目的捕获器:

看看这个: http : //dotnet.dzone.com/articles/programmatically-clearing-0

如果使用Jquery-ajax在客户端形成了缓存,则使用:

$.ajax({
    cache: false
    //rest of your ajax setup
});

除了ajax调用中的cache: false之外,您还可以定位操作方法并创建no cache操作过滤器属性。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : 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);
  }
}

在这里得到了很好的解释。 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM