Asp.net mvc 2 MVC输出缓存问题

Asp.net mvc 2 MVC输出缓存问题,asp.net-mvc-2,outputcache,Asp.net Mvc 2,Outputcache,我试图在MVC2中缓存控制器操作的输出,如下所示: [OutputCache(Duration = 600, VaryByParam = "id", Location=System.Web.UI.OutputCacheLocation.Server)] public FileContentResult GetImage(int id) { } 当用户为其图标上载新图像时,我使用以下行使缓存无效: HttpResponse.RemoveOutputCacheItem("/MyPa

我试图在MVC2中缓存控制器操作的输出,如下所示:

[OutputCache(Duration = 600, VaryByParam = "id", Location=System.Web.UI.OutputCacheLocation.Server)]
        public FileContentResult GetImage(int id) {
}
当用户为其图标上载新图像时,我使用以下行使缓存无效:

HttpResponse.RemoveOutputCacheItem("/MyPage/GetImage/" + u.UserID.ToString());

然而,这似乎不起作用,我也不明白为什么我对此不确定,但在我看来,即使使用“Location=server”,它仍可能在客户端缓存(好像根本没有outputCache属性),除非还有“NoStore=true”

因此,问题可能是客户端缓存的结果


您可以通过使用调试工具(如fiddler或浏览器内置的工具)检查客户端请求来检查是否存在这种情况

您的代码看起来是正确的。能否验证
u.UserID.ToString()
是否返回了正确的id?是的,它肯定返回了正确的id要验证这一点,请使用浏览器的调试工具网络(net)视图,并查找GetImage调用的304状态。304表示浏览器不会返回到服务器。要解决这个问题,您可以在调用中添加一个时间戳作为额外参数。@Steve在添加额外参数时,肯定会强制直接请求映像,即使映像没有更改,它也会这样做,这与他首先放置OutputCache属性的原因相反我理解您的逻辑,您可能是正确的,但是当浏览器执行请求时,服务器可能会启动缓存机制。我猜-现在无法测试。@Steve您可能在这一点上是对的,毕竟这就是VaryByParam的全部内容,而且OutputCache属性设置为Location=“server”,所以他不太喜欢客户端缓存。