2

我在显示员工记录列表的索引页面上使用 OutputCaching

[OutputCache(Duration = 120, VaryByParam = "empId;page;sort;")]

但是当我从列表中删除一条记录时,由于缓存,删除的记录也会被列出,直到 Outputcache 过期。如果发生删除操作,有没有办法刷新输出缓存?我在我的 MVC3 剃须刀页面上使用它。

我的页面上列出了 100 条记录,每条记录都有一个“删除”按钮来删除该特定记录。我还在页面上使用 OutputCaching,以便页面加载更快。

现在,如果我通过点击删除按钮删除一条记录,由于 OutputCaching ,即使已删除的记录也会显示在页面上,直到 outputcache 过期。有没有办法,我可以解决这个问题?

有没有办法,我可以只从我的输出缓存中删除已删除的记录?

或者如果要添加新记录,我不想删除 OutputCache 并再次重新创建缓存,而是想将我的新记录附加到现有的 outputCache ?

4

2 回答 2

0

在控制器或页面加载代码中使用:

HttpContext.Cache.Insert("Record"+ recordid, 1);
Response.AddCacheItemDependency("Record"+ recordid);

在记录删除方法中使用

    HttpContext.Cache.Remove("Record"+ recordid);
于 2012-10-13T21:56:57.187 回答
0

您能否尝试在您的 url 中附加一个查询字符串参数,该参数会在您删除记录时破坏缓存?这是我用来打破 ajax 获取请求的客户端缓存的常用方法。

然后只需将该查询字符串参数添加到您的 VaryByParam 列表中。我刚刚在本地对此进行了测试,并且能够在我的参数中发送一个不同的值时强制输出缓存中断,该值已被删除RecordId。

因此,每当您完成删除项目并即将重定向回列表操作时,如果您使用 RedirectToAction,请确保在路由值中传递参数,然后只需为路由值创建一个匿名对象以保存您的查询字符串参数缓存破坏。它看起来与此类似:

return RedirectToAction("list", "category", new { deletedRecordId = deletedRecordId });
于 2012-08-01T18:42:05.557 回答