ASP的XML缓存类,代替了Application

本文介绍了一个使用XML进行缓存管理的VBScript类-RyM_ClsCache。该类提供了创建和管理缓存的功能,包括设置缓存名称、读取和更新缓存值等。适用于需要简单缓存机制的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<%
'=========================================
'
 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 NothingThen
            
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 NothingThen
            Value 
= XmlDoc.Text
        
End If        
    
End Property
    
'移除当前节点
    Public Sub Remove()
        
If Not (XmlDoc Is NothingThen
            XmlDoc.ParentNode.RemoveChild(XmlDoc)
            XmlDom.Save(XmlPath)
        
End If
    
End Sub
    
'检测当前节点是否存在
    Public Function IsXmlObj()
        IsXmlObj 
= False
        
If Not (XmlDoc Is NothingThen
            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
%
>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值