是否可以从其他操作中清除一个操作的缓存?
假设我的索引操作列出了我的所有小部件。有许多小部件,但新的小部件不是经常创建的。所以我想无限期地缓存我的Index操作,但强制它在成功创建后呈现。
public class WidgetController : Controller
{
[OutputCache(Duration = int.MaxValue, VaryByParam = "none")]
public ActionResult Index()
{
return View(Widget.AllWidgets);
}
public ActionResult Create()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string name)
{
Widget widget = new Widget(name);
// Can I clear Index's cache at this point?
// ClearCache("Index");
return View(widget);
}
}
答案 0 :(得分:4)
HttpResponse.RemoveOutputCacheItem?
答案 1 :(得分:2)
每当添加新的Widget时,使用VaryByCustom属性使缓存失效。
答案 2 :(得分:0)
恕我直言,如果您调用Create
操作,则不会点击缓存,因为您只是渲染视图而不是重定向到已缓存输出的Index
操作。