禁用输出缓存

时间:2012-08-24 15:09:03

标签: c# asp.net-mvc caching output-caching

我有一个actionResult,我已经添加了缓存。

[OutputCache(Duration = 120)]

当我更改页面上的某些元素(缓存)时,我想删除缓存的输出。这就是我做的事情

public void RemoveCachingForProfile(string guid)
{
    HttpResponse.RemoveOutputCacheItem("/Profile/" + guid);
}

当我在页面中更改内容时,我会通过RemoveCachingForProfile功能。然后,当我回到我的个人资料页面时,它仍会显示缓存中的内容,即使我禁用了它。

如果我点击f5,它会显示正确的输出。它似乎是缓存页面的浏览器。

2 个答案:

答案 0 :(得分:2)

您必须将缓存存储在服务器而不是本地计算机上:

[OutputCache(Location = OutputCacheLocation.Server, Duration = 120)]

这是依赖性:

System.Web.UI

答案 1 :(得分:1)

如果没有Location属性,除了服务器端缓存之外,输出缓存提供程序还会告诉客户端(浏览器)在属性属性上给出的持续时间内缓存响应。为防止这种情况,您需要使用Location

OutputCacheAttribute属性

将属性更改为此可以解决您的问题:

[OutputCache(Duration = 120, Location=OutputCacheLocation.Server)]