我开始在我的网站上使用 OutputCache。 我遇到的问题是,当用户更新项目时,我需要重置该项目的缓存。
我使用以下方法做到了这一点:
var urlToRemove = Url.Action("Details", "Dress", new {id = model.Id});
Response.RemoveOutputCacheItem(urlToRemove);
在“编辑”操作中,我还将更新成功消息设置为 TempData,并在下一个请求时显示它。问题在于该消息保留在缓存的响应中。
你知道如何避免在操作中缓存吗?像这样的东西:
[OutputCache(Duration = 3600, VaryByParam = "id")]
public ViewResult Details(int id)
{
if(NotificationHelper.HasNotifications)
Response.DoNotCache();
.....
我不能使用相同的技巧...因为页面在渲染后被添加到缓存中。所以我无法从其主体的缓存中排除某个操作。
最佳答案
您所描述的内容有时被称为“ donut 洞缓存”,因为您想要缓存除中间的一些动态内容之外的所有内容。
以下是您可能需要查看的一些资源:
关于asp.net-mvc - ASP MVC 3 OutputCache避免缓存当前请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179452/