ASP的XML缓存类,代替了Application

< %
' =========================================
'
 ClassName:    RyM_ClsCache
'
 Version:    1.0
'
 Date:        2006-8-2
'
 Author:    网海の求生
'
=========================================
'
 调用说明:
'
 Set CC = New RyM_ClsCache      '创建对象
'
 CC.CreateXmlObj "Temp.xml","/ROYAH_CACHE"
'
 CC.Name = "CA"               '设置缓存名
'
 If CC.IsXmlObj() Then    '如果存在缓存则
'
   Temp = CC.Value       '直接xml中读取值
'
 Else 否则
'
   Temp = "要缓存的内容,只能是字符串"
'
   CC.Value = Temp   '把要缓存的值写入xml
'
 End If
'
 Set CC = Nothing               '释放对象
'
       变量Temp就是经过缓存后的字符串值了
'
=========================================
Class RyM_ClsCache
    
Public  Reloadtime
    
Private  XmlDom, XmlDoc, XmlNode, XmlAttr, AttrTime
    
Private  CacheName, LocalCacheName, XmlPath
    
Private   Sub  Class_Initialize()
        Reloadtime 
=   14400
    
End Sub
    
Private   Sub  Class_Terminate()
        Close()
    
End Sub
    
' 新建文本文件
     Private   Function  SaveToFile(ByVal strBody,ByVal SavePath) 
        
Set  ObjStream  =  Server.CreateObject( " ADODB.Stream "
        ObjStream.Open
        ObjStream.Type 
=   2  
        ObjStream.Charset 
=   " GB2312 "
        ObjStream.WriteText strBody
        ObjStream.SaveToFile SavePath,
2
        ObjStream.Close
        
Set  ObjStream  =   Nothing  
    
End Function
    
' 创建Xml对象
     Public   Sub  CreateXmlObj(ByVal XmlName, ByVal ChName)
        
Set  XmlDom  =  Server.CreateObject( " Microsoft.FreeThreadedXMLDOM " )
        XmlPath 
=  Server.MapPath(XmlName)
        CacheName 
=  ChName
        
If   Not  XmlDom.Load(XmlPath)  Then   ' 如果指定的缓存文件不存在则自动新建
            SaveToFile  " <?xml version=""1.0"" encoding=""GB2312""?><ROYAH_CACHE></ROYAH_CACHE> " ,XmlPath
            XmlDom.Load(XmlPath)
        
End   If
    
End Sub
    
' 设置返回数据节点名
     Public   Property   Let  Name(ByVal vNewValue)
        LocalCacheName 
=  vNewValue
        
If  LocalCacheName  <>   ""   Then
            
Set  XmlDoc  =  XmlDom.documentElement.selectSingleNode(CacheName  &   " / "   &  LocalCacheName)
        
End   If
    
End Property
    
' 设置当前节点值
     Public   Property   Let  Value(ByVal vNewValue)
        
If  (XmlDoc  Is   Nothing Then
            
Set  XmlDoc  =  XmlDom.documentElement.selectSingleNode(CacheName)
            
Set  XmlNode  =  XmlDom.createElement(LocalCacheName)
            
Set  XmlAttr  =  XmlDom.createAttribute( " Time " )
            XmlNode.Text 
=  vNewValue
            XmlAttr.Text 
=   Now ()
            XmlDoc.AppendChild(XmlNode)
            XmlNode.setAttributeNode XmlAttr
            XmlDom.Save(XmlPath)
        
Else
            XmlDoc.Text 
=  vNewValue
            
Set  AttrTime  =  XmlDoc.selectSingleNode( " ./@Time " )
            AttrTime.Text 
=   Now ()
            XmlDom.Save(XmlPath)
        
End   If
    
End Property
    
' 返回当前节点值
     Public   Property   Get  Value()
        
If   Not  (XmlDoc  Is   Nothing Then
            Value 
=  XmlDoc.Text
        
End   If         
    
End Property
    
' 移除当前节点
     Public   Sub  Remove()
        
If   Not  (XmlDoc  Is   Nothing Then
            XmlDoc.ParentNode.RemoveChild(XmlDoc)
            XmlDom.Save(XmlPath)
        
End   If
    
End Sub
    
' 检测当前节点是否存在
     Public   Function  IsXmlObj()
        IsXmlObj 
=   False
        
If   Not  (XmlDoc  Is   Nothing Then
            IsXmlObj 
=   True
            
Set  AttrTime  =  XmlDoc.selectSingleNode( " ./@Time " )
            
If   DateDiff ( " s " , CDate (AttrTime.Text), Now ())  >  ( 60 * Reloadtime)  Then  IsXmlObj  =   False
        
End   If
    
End Function
    
' 释放全部对象
     Public   Sub  Close()
        
If   IsObject (XmlDom)  Then   Set  XmlDom  =   Nothing
        
If   IsObject (XmlDoc)  Then   Set  XmlDoc  =   Nothing
        
If   IsObject (XmlNode)  Then   Set  XmlNode  =   Nothing
        
If   IsObject (XmlAttr)  Then   Set  XmlAttr  =   Nothing
        
If   IsObject (AttrTime)  Then   Set  XmlAttr  =   Nothing
    
End Sub
End  Class
%
>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值