如何在asp.net应用程序中单击按钮清除服务器端缓存?

时间:2012-07-30 11:03:15

标签: c# asp.net .net server-side

我对此有一个典型的要求。

我有一个在asp.net 4.0中开发的Web应用程序。在这个应用程序中,我想在其中一个Web表单中添加一个按钮,它将执行以下任务:

  1. 它应该清除服务器端缓存,我的意思是它应该清除托管应用程序的同一IIS服务器的缓存。
  2. 现在,我知道我们可以通过删除此处存在的文件手动实现它,

    %systemroot%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
    %systemroot%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
    

    我们需要在删除临时文件之前关闭IIS,然后再重新启动它。为了避免对缓存文件的任何依赖。

    但我想知道如何在网络表单的按钮点击事件中实现它。 请帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

我目前在我的应用程序中使用以下内容:

    public static void ClearAspNetCache(HttpContext context) {
        foreach (DictionaryEntry entry in context.Cache) {
            context.Cache.Remove((string)entry.Key);
        }
    }

这是一个非常有用的源参考:

http://aspadvice.com/blogs/ssmith/archive/2005/11/14/Extending-the-ASPNET-Cache-Object-Cache-Clear.aspx#33197

答案 1 :(得分:1)

如果要从缓存中删除所有项目,请尝试使用此功能:

IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator();    
while (enumerator.MoveNext())
{    
    HttpContext.Current.Cache.Remove(enumerator.Key);    
}

答案 2 :(得分:1)

从HttpContext.Current.Cache中删除项目不会清除IIS缓存。 它是服务器端缓存(由ASP.NET运行时管理),而不是Web服务器缓存。

查看此链接。 http://blogs.msdn.com/b/dougste/archive/2008/08/11/clearing-out-temporary-asp-net-files.aspx