日期:2014-05-20 浏览次数:20615 次
using System; using System.Collections.Generic; using System.Web; using System.Configuration; using System.Collections; /// <summary> ///CacheHelper 的摘要说明 /// </summary> public class CacheHelper { #region 从配置文件中读取缓存时间 //缓存时间 private static string _CacheTime = string.Empty; public static string CacheTime { get { try { _CacheTime = ConfigurationManager.AppSettings["CacheTime"].ToString(); } catch (Exception) { _CacheTime = "0"; } return _CacheTime; } set { _CacheTime = value; } } #endregion public CacheHelper() { // //TODO: 在此处添加构造函数逻辑 // } #region 插入Cache /// <summary> /// 插入Cache /// </summary> /// <typeparam name="T"></typeparam> /// <param name="o"></param> /// <param name="key"></param> public static void Add<T>(T o, string key) { HttpContext.Current.Cache.Insert( key, o, null, DateTime.Now.AddMinutes(Convert.ToDouble(CacheTime)), // Cache的缓存时间,通常建议配置在Config文件中 System.Web.Caching.Cache.NoSlidingExpiration); } #endregion #region 删除指定的Cache /// <summary> /// 删除指定的Cache /// </summary> /// <param name="key">Cache的key</param> public static void Clear(string key) { HttpContext.Current.Cache.Remove(key); } #endregion #region 判断Cache是否存在 /// <summary> /// 判断Cache是否存在 /// </summary> /// <param name="key"></param> /// <returns></returns> public static bool Exists(string key) { return HttpContext.Current.Cache[key] != null; } #endregion #region 取得Cache值,带类型 T /// <summary> /// 取得Cache值,带类型 T /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="value"></param> /// <returns></returns> public static bool Get<T>(string key, out T value) { try { if (!Exists(key)) { value = default(T); // return false; } value = (T)HttpContext.Current.Cache[key]; } catch { value = default(T); return false; } return true; } #endregion #region 清除所有缓存 /// <summary> /// 有时可能需要立即更新,这里就必须手工清除一下Cache ///Cache类有一个Remove方法,但该方法需要提供一个CacheKey,但整个网站的CacheKey我们是无法得知的 ///只能经过遍历 /// </summary> public static void RemoveAllCache() { System.Web.Caching.Cache _cache = HttpRuntime.Cache; IDictionaryEnumerator CacheEnum = _cache.GetEnumerator(); ArrayList al = new ArrayList(); while (CacheEnum.MoveNext()) { al.Add(CacheEnum.Key); } foreach (string key in al) { _cache.Remove(key); } } #endregion #region 显示所有缓存 //显示所有缓存 public static string show() { string str = ""; IDictionaryEnumerator CacheEnum = HttpRuntime.Cache.GetEnumerator(); while (CacheEnum.MoveNext()) { str += "<br />缓存名<b>[" + CacheEnum.Key + "]</b><br />"; } return "当前网站总缓存数:" + HttpRuntime.Cache.Count + "<br />" + str; } #endregion }