3

我有一个添加缓存的 actionResult。

[OutputCache(Duration = 120)]

当我更改页面上的某些元素时,即缓存,我想删除缓存的输出。这是我所做的

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

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

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

4

2 回答 2

2

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

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

这是依赖关系:

System.Web.UI
于 2012-08-24T15:12:15.953 回答
1

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

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

[OutputCache(Duration = 120, Location=OutputCacheLocation.Server)]
于 2012-08-24T15:11:52.760 回答