MVC 4.0使用HttpResponse.RemoveOutputCacheItem清除输出缓存

时间:2014-01-22 23:33:58

标签: asp.net-mvc asp.net-mvc-4 caching

我正在尝试在MVC 4.0 ASP.net应用程序中实现缓存。我可以使用outputcache缓存

[OutputCache (Duration=60)]
public ActionResult myaction(string parm1)
{
     --logic to construct the model object
     -- followed by this return statement

     return PartialView(model);
}

但是我需要在编辑存储在xml文件中的数据后清除缓存。

所以我尝试添加

HttpResponse.RemoveOutputCacheItem(Url.Action("myaction", "myController"));

在调用return RedirectToAction(myaction);

之前,在同一控制器的另一个操作中

但是缓存没有被重置。

这是使用操作刷新outputcache的方法吗?我使用ajax从jquery调用这些操作。

3 个答案:

答案 0 :(得分:0)

请改用ICacheProvider。 OutputCache在你可以做的事情上非常有限。

一旦您需要更改缓存的数据,您可以使用ICacheProvider使该特定数据无效,在cacheoutput中,您可以缓存整个actionresult,也可以不缓存。

此外,cacheoutput没有我使用cacheprovider既没有使用它的美妙的灵活性。

答案 1 :(得分:0)

您可能已将输出缓存在用户的计算机上而不是服务器上。尝试指定位置:

[OutputCache(Location= System.Web.UI.OutputCacheLocation.Server, Duration=60]

否则缓存删除将无效,因为您已在用户计算机上缓存HTML输出

答案 2 :(得分:0)

ASP.NET MVC支持甜甜圈缓存,但不支持甜甜圈缓存。您可以缓存部分视图并排除父视图但是您无法缓存父视图并排除部分视图。编写用于缓存的自定义过滤器或使用https://www.nuget.org/packages/MvcDonutCaching