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

Asp.Net Cache辅助类

时间: 2024-10-17 22:33:13

Asp.Net Cache辅助类的相关文章

ASP.net Cache丢失的问题诊断

1 业务需求 缓存来自数据库的数据,不用频繁到数据库中加载. 2 使用模型 添加一个类 MyCache,然后在里面添加静态属性字段: public static DataTable FolderData { get { string key = "FolderData"; object o = HttpRuntime.Cache[key]; if (o == null) { //从DB中加载数据 o = LoadFromDB(); //添加到缓存中(分钟过期) HttpRuntime.

细说 ASP.NET Cache 及其高级用法

许多做过程序性能优化的人,或者关注过程程序性能的人,应该都使用过各类缓存技术. 而我今天所说的Cache是专指ASP.NET的Cache,我们可以使用HttpRuntime.Cache访问到的那个Cache,而不是其它的缓存技术. 以前我在[我心目中的Asp.net核心对象] 这篇博客中简单地提过它,今天我打算为它写篇专题博客,专门来谈谈它,因为它实在是太重要了.在这篇博客中, 我不仅要介绍它的一些常见用法,还将介绍它的一些高级用法. 在上篇博客[在.net中读写config文件的各种方法] 的

细说 ASP.NET Cache 及其高级用法【转】

阅读目录 开始 Cache的基本用途 Cache的定义 Cache常见用法 Cache类的特点 缓存项的过期时间 缓存项的依赖关系 - 依赖其它缓存项 缓存项的依赖关系 - 文件依赖 缓存项的移除优先级 缓存项的移除通知 巧用缓存项的移除通知 实现[延迟操作] 巧用缓存项的移除通知 实现[自动加载配置文件] 文件监视技术的选择 各种缓存方案的共存 许多做过程序性能优化的人,或者关注过程程序性能的人,应该都使用过各类缓存技术. 而我今天所说的Cache是专指ASP.NET的Cache,我们可以使用

asp.net Cache

因微信分享功能,获取access_token(一个toke 套一个token,7200秒过期时间)所以用到了asp.net Cache ,暂时发现Cache是最好用的,可以设置缓存自动过期时间,不说了 直接上代码...就一两行代码....,暂时记下来,方便以后快速回忆代码... //获取缓存 object cacheaccess_token = Cache.Get("access_token"); //添加缓存 Cache.Insert("access_token"

ASP.NET Cache缓存的使用

ASP.NET Cache是提升系统性能的重要方法,它使用了“最近使用”原则(a least-recently-used algorithm).在数据库访问中经常会用到Cache保存数据库数据. 1.缓存的添加: Cache的添加方法有Add()或Insert(),两种方法几乎类似,只是Inser方法可以使用可选参数,即使用默认参数,来实现缓存的添加: Cache.Add( KeyName,//缓存名 KeyValue,//要缓存的对象 Dependencies,//依赖项 AbsoluteEx

ASP.NET Cache的一些总结分享

最近我们的系统面临着严峻性能瓶颈问题,这是由于访问量增加,客户端在同一时间请求增加,这迫使我们要从两个方面解决这一问题,增加硬件和提高系统的性能. 1.1.1 摘要 最近我们的系统面临着严峻性能瓶颈问题,这是由于访问量增加,客户端在同一时间请求增加,这迫使我们要从两个方面解决这一问题,增加硬件和提高系统的性能. 大家可以通过各种各样的方法去优化我们系统,本篇博文将介绍通过Cache方法来优化系统的性能,减轻系统的负担. 1.1.2 正文 不同位置的缓存 在Web应用程序中的使用缓存位置主要有:客

ASP.NET cache缓存的用法

本文导读:在.NET运用中经常用到缓存(Cache)对象.有HttpContext.Current.Cache以及HttpRuntime.Cache,HttpRuntime.Cache是应用程序级别的,而HttpContext.Current.Cache是针对当前WEB上下文定义的.HttpRuntime下的除了WEB中可以使用外,非WEB程序也可以使用. 1.HttpRuntime.Cache 相当于就是一个缓存具体实现类,这个类虽然被放在了 System.Web 命名空间下了.但是非 Web

ASP.NET Cache 实现依赖Oracle的缓存策略

ASP.NET 中的缓存提供了对SQL依赖项的支持,也就是说当SQL SERVER数据库中的表或行中的数据被更改后,缓存中的页面就失效,否则,页面输出可一直保留在缓存当中.这确实为程序员提供了方便.但微软一向很小家子气,只为使用自家产品SQL SERVER的程序员提供了方便,那些用Oracle数据库的ASP.NET程序员怎么办呢? 其实不用着急,因为ASP.NET中的缓存还提供了对文件依赖项的支持,也就是缓存依赖于某个文件,该文件被修改后,缓存中的页面就失效.只要巧妙利用ASP.NET的文件依赖

ASP.Net Cache(缓存)&mdash;ASP.NET细枝末节(2)

概述 1.意义 把数据放到Cache中,在指定的时间内,可以直接从Cache中获取,避免对数据库等的压力. 2.做法 设置: HttpRuntime.Cache.Insert(CacheKey, objObject,null,absoluteExpiration,slidingExpiration); 读取: HttpRuntime.Cache["name"] Demo protected void Page_Load(object sender, EventArgs e) { //C