禁用输出缓存

3

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

[OutputCache(Duration = 120)]

当我更改了页面上一些被缓存的元素时,我希望移除缓存输出。以下是我所做的:

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

当我在页面中更改某些内容时,我会通过RemoveCachingForProfile函数进行操作。然后,当我回到我的个人资料页面时,它仍然显示缓存中的内容,即使我已禁用它。
如果我按F5,它会显示正确的输出。似乎是浏览器正在缓存页面。
2个回答

2

您需要将缓存存储在服务器上,而不是本地机器上:

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

以下是依赖项:

System.Web.UI

1

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

将您的属性更改为以下内容即可解决问题:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接