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);
}