Discuz!NT 缓存设计简析
/建立对象的唯一键值, 用以映射XML和缓存对象的键 16 string objectId=""; 17 18 XmlNode node = objectXmlMap.SelectSingleNode(PrepareXpath(xpath)); 19 if ( node != null) 20 { 21 objectId = node.Attributes["objectId"].Value; 22 } 23 if(objectId=="") 24 { 25 groupNode = CreateNode(group); 26 objectId= Guid.NewGuid().ToString(); 27 //建立新元素和一个属性 for this perticular object 28 XmlElement objectElement = objectXmlMap.OwnerDocument.CreateElement(element); 29 XmlAttribute objectAttribute =objectXmlMap.OwnerDocument.CreateAttribute("objectId"); 30 objectAttribute.Value = objectId; 31 objectElement.Attributes.Append(objectAttribute); 32 //为XML文档建立新元素 33 groupNode.AppendChild(objectElement); 34 } 35 else 36 { 37 //建立新元素和一个属性 for this perticular object 38 XmlElement objectElement = objectXmlMap.OwnerDocument.CreateElement(element); 39 XmlAttribute objectAttribute =objectXmlMap.OwnerDocument.CreateAttribute("objectId"); 40 objectAttribute.Value = objectId; 41 objectElement.Attributes.Append(objectAttribute); 42 //为XML文档建立新元素 43 groupNode.ReplaceChild(objectElement,node); 44 } 45 //向缓存加入新的对象 46 cs.AddObjectWithFileChange(objectId,o,files); 47 48 } 49 为什么要用XML, 主要是为了使用XML中的层次化功能以及相关的结点添加,替换,移除,
//检查并移除相应的缓存项 return instance;
小插曲: &n |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |