ASP.NET 输出缓存的移除

发表于:2010-3-09 10:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
ASP
#
DotNet

  ASP.NET输出缓存的使用网上已经有很多例子了,这里主要介绍下如何在后台管理中移除缓存。

  1.基于页面缓存

  对于页面:Default.aspx  如果页面顶部添加:

<%@OutputCacheDuration="60"VaryByParam="none"%>

  在后台管理中要移除很简单:

System.Web.HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("Default.aspx"));

  2.基于控件

  对于控件WebUserControl.ascx 如果在顶部添加了

<%@OutputCacheDuration="60"VaryByParam="none"  Shared="true"%>

  在后台管理中要实现的话有点麻烦,查尔斯提供了一种解决方法。

  实现如下:

  (1)添加VaryByCustom项,值为Cashgroupclass。

<%@OutputCacheDuration="60"VaryByParam="none"  Shared="true"  VaryByCustom="Cashgroupclass"%>

  (2)  在Global.asax 中重写 GetVaryByCustomString 方法,代码如下:

  代码

  public override string GetVaryByCustomString(HttpContext context, string arg)
    {
        
if (arg == "Cashgroupclass")
        {
            Cache objCache 
= HttpRuntime.Cache;
            Object _flag 
= objCache["Cashgroupclass"];
            
if (_flag == null)
            {
                _flag 
= DateTime.Now.Ticks.ToString();
                objCache.Insert(
"Cashgroupclass", _flag);
            }
            
return _flag.ToString();
        }   
        
return base.GetVaryByCustomString(context, arg);
    }

  (3)在后台管理的移除页面添加如下代码:

Cache objCache = HttpRuntime.Cache;
if (objCache["Cashgroupclass"!= null)
{
    objCache.Remove(
"Cashgroupclass");
}

  当然,您也可以借助这个方法实现控件的缓存更新。对了,查尔斯贴的代码中有使用DataCache类,是个自己写的类,可以参考DataCache ,不过里面重载参数对不上。那就加一个吧。

  代码

public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)
  {
    HttpRuntime.Cache.Insert(CacheKey, objObject, 
null, absoluteExpiration, slidingExpiration);
  }

  最后,感谢朋友们对我的帮助。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号