快速业务通道

Discuz!NT 缓存设计简析

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-11
       instance.RemoveObject(xpath, false);
                                }
                            }
                        }

                        cachefileoldchange = cachefilenewchange;

                        dsSrc.Dispose();
                    }
                }
      }
      return instance;
}

 

         2.另外需要说明的是在4月份时缓存机制出现了一些问题,比如缓存数据丢失以及在.net2下
的死循环的问题,后来在雪人的建议下采用每个缓存都有缓存标志来解决数据丢失的问题。也就
是如下的代码段:


 1 //添加时
 2 public virtual void AddObject(string xpath, DataTable dt) 
 3 {
 4     lock(lockHelper)
 5     {
 6  if(dt.Rows.Count>0)
 7  {
 8   AddObject(xpath+"flag", CacheFlag.CacheHaveData);
 9  }
10  else
11  {
12   AddObject(xpath+"flag", CacheFlag.CacheNoData);
13  }
14  AddObject(xpath, (object) dt);
15     }
16 }
17
18
19 //获取时
20 public virtual object RetrieveObject(string xpath)
21 {
22  try
23  {
24   object cacheObject = RetrieveOriginObject(xpath);
25   CacheFlag cf = (CacheFlag) RetrieveOriginObject(xpath+"flag");
26   
27   //当标志位中有数据时
28   if(cf ==CacheFlag.CacheHaveData) 
29   {
30                   string otype = cacheObject.GetType().Name.ToString();
31
32              //当缓存类型是数据表类型时
33      if(otype.IndexOf("Table")>0) 
34             {
35    System.Data.DataTable dt = cacheObject as DataTable;
36                  if ((dt == null) || (dt.Rows.Count == 0))
37&n

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号