Asp.Net Cache辅助类

辅助类代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Caching;

namespace BusinessRules.Common
{
    /// <summary>
    /// Cache高度缓存
    /// </summary>
    public class CacheManager
    {
        #region --Property--
        private static string _cacheKey = String.Empty;
        private static String _sqlDepName = "CacheData";

        /// <summary>
        /// 缓存索引键值
        /// </summary>
        public static string CacheKey
        {
            get { return CacheManager._cacheKey; }
            set { CacheManager._cacheKey = value; }
        }

        /// <summary>
        /// 缓存依赖名称
        /// </summary>
        public static String SqlDepName
        {
            get { return CacheManager._sqlDepName; }
            set { CacheManager._sqlDepName = value; }
        }
        #endregion

        #region --Method--
        /// <summary>
        /// 获取当前应用程序指定cacheKey的Cache对象值
        /// </summary>
        /// <param name="cacheKety">索引键值</param>
        /// <returns>返回对象</returns>
        public static Object GetCache(String cacheKey)
        {
            if (!String.IsNullOrEmpty(cacheKey))
            {
                Cache objCache = HttpRuntime.Cache;
                return objCache[cacheKey];
            }
            else
            {
                return null;
            }
        }

        /// <summary>
        /// 获取当前应用程序指定cacheKey的Cache对象值
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="cacheKey">索引键值</param>
        /// <returns>返回对象类型</returns>
        public static T GetCache<T>(String cacheKey)
        {
            object obj = GetCache(cacheKey);
            return obj == null ? default(T) : (T)obj;
        }

        /// <summary>
        /// 设置当前应用程序指定CacheKey的Cache对象值
        /// </summary>
        /// <param name="cacheKey">索引键值</param>
        /// <param name="obj">c</param>
        public static void SetCache(String cacheKey, Object obj)
        {
            Cache objCache = HttpRuntime.Cache;
            objCache.Insert(cacheKey, obj);
        }

        /// <summary>
        /// 创建缓存依赖项
        /// </summary>
        /// <param name="cacheKey"></param>
        /// <param name="obj"></param>
        /// <param name="fileName"></param>
        public static void SetCache(String cacheKey, Object obj, String fileName)
        {
            CacheDependency cdep = new CacheDependency(fileName);
            Cache objCache = HttpRuntime.Cache;
            objCache.Insert(cacheKey, obj, cdep);
        }

        /// <summary>
        /// 设置当前应用程序指定CacheKey的Cache对象值
        /// </summary>
        /// <param name="cacheKey">索引键值</param>
        /// <param name="obj">索引键值</param>
        /// <param name="absoluteExpiration">绝对过期时间</param>
        /// <param name="slidingExpiration">最后一次访问所插入对象时与该对象过期时之间的时间间隔</param>
        public static void SetCache(String cacheKey, Object obj, DateTime absoluteExpiration, TimeSpan slidingExpiration)
        {
            Cache objCache = HttpRuntime.Cache;
            objCache.Insert(cacheKey, obj, null, absoluteExpiration, slidingExpiration);
        }

        /// <summary>
        /// 创建缓存项过期
        /// </summary>
        /// <param name="cacheKey">索引键值</param>
        /// <param name="obj">索引对象</param>
        /// <param name="expires">过期时间</param>
        public static void SetCache(String cacheKey, Object obj, Int32 expires)
        {
            Cache objCache = HttpRuntime.Cache;
            objCache.Insert(
            cacheKey,
            obj,
            null,
            Cache.NoAbsoluteExpiration,//从不过期
            new TimeSpan(0, expires, 0)
            );
        }

        /// <summary>
        /// 设置依赖的方式缓存数据
        /// </summary>
        /// <param name="cacheKey"></param>
        /// <param name="obj"></param>
        /// <param name="cdep"></param>
        public static void SetCache(String cacheKey, Object obj, CacheDependency cdep)
        {
            Cache objCache = HttpRuntime.Cache;
            objCache.Insert(
                cacheKey,
                obj,
                cdep,
                Cache.NoAbsoluteExpiration,//从不过期
                Cache.NoSlidingExpiration,//禁用可调过期
                CacheItemPriority.Default,
                null
                );
        }
        //==========调用方式Start===============
        //    文件依赖使用说明
        //    System.Web.Caching.CacheDependency dep = new System.Web.Caching.CacheDependency("C:\test.txt");
        //   SetCache(CacheKey, objModel, dep);//写入缓存
        //
        //  数据库依赖项使用说明
        //   System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("codematic", "P_Product");
        //  SetCache(CacheKey, objModel, dep);//写入缓存
        //
        //==========调用方式end===============
        #endregion
    }
}

调用方式

        //设置缓存的键值
            CacheManager.CacheKey = "NavMenue";
            //获取当前键值下的缓存数据
            Object cacheModel = CacheManager.GetCache(CacheManager.CacheKey);
            //如果缓存中不存在当前键值对象
            if (cacheModel == null)
            {
                //将数据存储到缓存中
                cacheModel = bsnManage.Obj_List(navPosition);
                if (cacheModel != null)
                {
                    //依赖数据库的sc_navigation 表变化来更新
                    SqlCacheDependency scdep = new SqlCacheDependency(CacheManager.SqlDepName, "sc_navigation");

                    //写入缓存
                    CacheManager.SetCache(CacheManager.CacheKey, cacheModel, scdep);
                }
                return (DataTable)cacheModel;
            }
            else
                return (DataTable)CacheManager.GetCache(CacheManager.CacheKey);
原文地址:https://www.cnblogs.com/acoll/p/3840277.html