我在Index页面上使用OutputCaching,其中显示了员工记录列表
[OutputCache(Duration = 120, VaryByParam = "empId;page;sort;")]
但是当我从列表中删除一条记录时,由于缓存,删除的记录也会被列出,直到Outputcache过期。 如果发生删除操作,有没有办法可以刷新outputcache? 我在我的MVC3剃须刀页面上使用它。
我的页面上列出了100条记录,每条记录都有一个"删除"按钮删除该特定记录。我还在页面上使用OutputCaching,以便页面加载更快。
现在如果我通过点击删除按钮删除一条记录,由于OutputCaching,即使删除的记录也会显示在页面上,直到outputcache过期。 有没有办法,我可以解决这个问题?
有没有办法,我只能从outputCache中删除已删除的记录?
或者如果要添加新记录,我不想删除OutputCache并再次重新创建缓存,而是想将我的新记录追加到现有的outputCache中?
答案 0 :(得分:0)
您是否可以尝试在您的网址中附加查询字符串参数,以便在删除记录时中断缓存?这是我用来破坏ajax get请求的客户端缓存的常用方法。
然后只需将该querystring参数添加到VaryByParam列表中。我刚刚在本地进行了测试,并且能够在我的param中发送一个不同的值,即DeleRecordId时强制输出缓存中断。
因此,每当您完成删除项目并且即将重定向到列表操作时,如果您使用RedirectToAction,请确保在路由值中传递参数,然后只需为路由值创建一个匿名对象来保存用于缓存清除的查询字符串参数。它看起来与此类似:
return RedirectToAction("list", "category", new { deletedRecordId = deletedRecordId });
答案 1 :(得分:0)
在控制器或页面加载代码中使用:
HttpContext.Cache.Insert("Record"+ recordid, 1);
Response.AddCacheItemDependency("Record"+ recordid);
在记录删除方法中使用
HttpContext.Cache.Remove("Record"+ recordid);