1 操作类
public class CacheClass
{
/// <summary>
/// 获取当前应用程序指定CacheKey的Cache值
/// </summary>
/// <param name="CacheKey"></param>
/// <returns></returns>
public static object GetCache(string CacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}
/// <summary>
/// 设置当前应用程序指定CacheKey的Cache值
/// </summary>
/// <param name="CacheKey"></param>
/// <param name="objObject"></param>
public static void SetCache(string CacheKey, object objObject)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(CacheKey, objObject);
}
/// <summary>
/// 设置当前应用程序指定CacheKey的Cache值
/// </summary>
/// <param name="CacheKey"></param>
/// <param name="objObject"></param>
public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);
}
/// <summary>
/// 清除单一键缓存
/// </summary>
/// <param name="key"></param>
public static void RemoveOneCache(string CacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Remove(CacheKey);
}
/// <summary>
/// 清除所有缓存
/// </summary>
public static void RemoveAllCache()
{
System.Web.Caching.Cache _cache = HttpRuntime.Cache;
IDictionaryEnumerator CacheEnum = _cache.GetEnumerator();
if (_cache.Count > 0)
{
ArrayList al = new ArrayList();
while (CacheEnum.MoveNext())
{
al.Add(CacheEnum.Key);
}
foreach (string key in al)
{
_cache.Remove(key);
}
}
}
/// <summary>
/// 以列表形式返回已存在的所有缓存
/// </summary>
/// <returns></returns>
public static ArrayList ShowAllCache()
{
ArrayList al = new ArrayList();
System.Web.Caching.Cache _cache = HttpRuntime.Cache;
if (_cache.Count > 0)
{
IDictionaryEnumerator CacheEnum = _cache.GetEnumerator();
while (CacheEnum.MoveNext())
{
al.Add(CacheEnum.Key);
}
}
return al;
}
}
2 调用
public DataSet GetDataSetByTypeid(string typeid)
{
string CacheKey = "KeyName-" + typeid;
DataSet objModel = (DataSet)DataCache.GetCache(CacheKey);
if (objModel == null)
{
try
{
objModel = ipro.GetDataSetByTypeid(typeid);//取得对象操作,根据自已的需求随意改
if (objModel != null)
{
int intCache = 30;//缓存时间,
//绝对期限
DataCache.SetCache(CacheKey, objModel, DateTime.Now.AddMinutes(intCache), TimeSpan.Zero);
//可调整期限 最后一次访问所插入对象时与该对象到期时之间的时间间隔。
//DataCache.SetCache(CacheKey, objModel, DateTime.MaxValue, TimeSpan.FromMinutes(3));
}
}
catch
{ }
}
return objModel;
}
注:特别注意在调用缓存时做日志记录时如果你用的是StreamWriter.AutoFlush = true;设置记录日志,
此时将会对Cache影响丢失,出现每次请求时重新做缓存现象.