如何以编程方式清除缓存?

Posted

技术标签:

【中文标题】如何以编程方式清除缓存?【英文标题】:How can I programmatically clear cache? 【发布时间】:2011-01-21 10:32:30 【问题描述】:

在我的应用程序 (ASP.NET + c#) 中,我需要在用户进入 aspx 页面之前清除缓存。

有人知道如何以编程方式清除 aspx 页面上的缓存,或者在 (c#) 后面的代码中吗?

【问题讨论】:

客户端缓存,我的代码只有在我清除浏览器缓存时才有效,否则不行.. 【参考方案1】:

在页面加载事件中编写如下代码:

protected void Page_Load(object sender, EventArgs e)

    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetExpires(DateTime.Now);
    Response.Cache.SetNoServerCaching();
    Response.Cache.SetNoStore();

【讨论】:

它适用于我,但在本地......当我将我的应用程序发布到服务器时它再次崩溃:( 再次崩溃是什么意思。你能给我解释一下服务器上实际发生的事情吗?你确定服务器上的任何崩溃是因为缓存吗?【参考方案2】:

您可以按如下方式从输出缓存中删除页面:

HttpResponse.RemoveOutputCacheItem("MyPage.aspx");

这不会将其从任何客户端缓存中删除,因此如果您想使用此技术,您可能需要禁用客户端缓存,例如通过在您的 aspx 页面中使用以下指令:

<%@ OutputCache Location="Server" ...

【讨论】:

【参考方案3】:

除非有一些 javascript 方法来清除缓存(这会很糟糕),否则你不能。

您最好的办法是按照 Sukhi 的建议执行操作,或者设置无缓存缓存配置文件并使用 OutputCache 指令,以确保页面根本不会被缓存。

【讨论】:

以上是关于如何以编程方式清除缓存?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式清除 MSIE/WinInet 缓存?

以编程方式清除 WinInet DNS 缓存

Sitecore - 以编程方式清除用户的缓存

有没有办法以编程方式清除所有缓存文件?

在 Linux 中以编程方式清除挂载 (SSD) 磁盘上的缓存

如何使用 Spring 清除所有 Hibernate 缓存(ehcache)?