熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET 輸出緩存的移除

2013-11-13 10:18:43  來源: .NET編程 

  ASPNET輸出緩存的使用網上已經有很多例子了這裡主要介紹下如何在後台管理中移除緩存

  基於頁面緩存

  對於頁面Defaultaspx  如果頁面頂部添加

  <%@OutputCacheDuration=VaryByParam=none%>

  在後台管理中要移除很簡單

  SystemWebHttpResponseRemoveOutputCacheItem(PageResolveUrl(Defaultaspx));

  基於控件

  對於控件WebUserControlascx 如果在頂部添加了

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

  在後台管理中要實現的話有點麻煩查爾斯提供了一種解決方法

  實現如下

  ()添加VaryByCustom項值為Cashgroupclass

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

  ()  在Globalasax 中重寫 GetVaryByCustomString 方法代碼如下

  代碼

  public override string GetVaryByCustomString(HttpContext context string arg)

  {

  if (arg == Cashgroupclass)

  {

  Cache objCache = HttpRuntimeCache;

  Object _flag = objCache[Cashgroupclass];

  if (_flag == null)

  {

  _flag = DateTimeNowTicksToString();

  objCacheInsert(Cashgroupclass _flag);

  }

  return _flagToString();

  }

  return baseGetVaryByCustomString(context arg);

  }

  ()在後台管理的移除頁面添加如下代碼

  Cache objCache = HttpRuntimeCache;

  if (objCache[Cashgroupclass] != null)

  {

  objCacheRemove(Cashgroupclass);

  }

  當然您也可以借助這個方法實現控件的緩存更新對了查爾斯貼的代碼中有使用DataCache類是個自己寫的類可以參考DataCache 不過裡面重載參數對不上那就加一個吧

  代碼

  public static void SetCache(string CacheKey object objObject DateTime absoluteExpiration TimeSpan slidingExpiration)

  {

  HttpRuntimeCacheInsert(CacheKey objObject null absoluteExpiration slidingExpiration);

  }


From:http://tw.wingwit.com/Article/program/net/201311/13217.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.