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