不同数据缓存,依赖同一个文件

由于志愿采集类型、各地市报名点、以及考生层次不同,所以现场报名的确认点也是不同的。如何将这些确认点信息进行缓存以便提高网站浏览的速度呢?可以利用EnterpriseLibrary的文件依赖缓存技术和单件模式。代码如下:

        private static readonly Object YYQRRQLockObject = new Object(); //锁

        /// <summary>
        /// 获取报名点信息
        /// </summary>
        /// <param name="strSXSDM">地市代码</param>
        /// <param name="strCCDM">层次代码</param>
        /// <returns></returns>
        public static ObjectBMDInfo GetBMDInfo(string strSXSDM, string strCCDM)
        {
            ICacheManager primitivesCache = CacheFactory.GetCacheManager();
           
            ObjectBMDInfo dstBMDInfo;

            //命名缓存文件名:志愿采集类型,地市代码,层次代码
            string CacheName = string.Format("QRDInfo_{0}_{1}_{2}", CommonSet.Type, strSXSDM, strCCDM); 

            // Cache中存在数据吗?
            object obj = primitivesCache.GetData(CacheName);
            if (obj == null)
            {
                // 无数据,加锁
                lock (YYQRRQLockObject)
                {
                    // 再次判断, 如果没有数据,则从数据库中获取数据
                    obj = primitivesCache.GetData(CacheName);
                    if (obj == null)
                    {
                        // 获取数据集
                        DA_Place_Time acc = new DA_Place_Time();
                        dstBMDInfo = acc.GetBMDInfo(strSXSDM, strCCDM);

                        // 加入缓存(文件依赖和时间依赖)
                        string fullFileName = CommonSet.CheckCacheFile(sr.BMDRelateFile);
                        primitivesCache.Add(CacheName, dstBMDInfo, CacheItemPriority.Normal, null, new ICacheItemExpiration[] { new FileDependency(fullFileName) }); //将所有的缓存都依赖一个文件,也就是说,只要依赖文件右边,那么所有的缓存都有重新创建
                        return dstBMDInfo;
                    }
                }
            }
           
            dstBMDInfo = (ObjectBMDInfo)obj;
            return dstBMDInfo;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值