ASP缓存技术详解

2019-01-13 01:00:21王冬梅


< %   
Class Cls_Cache   
'==================使用说明====================   
'本类模块是动网先锋原创,作者:迷城浪子。如采用本类模块,请不要去掉这个说明。
'公有变量:Reloadtime 过期时间(单位为分钟)缺省值为14400   
'MaxCount 缓存对象的最大值,超过则自动删除使用次数少的对象。缺省值为300   
'CacheName 缓存组的总名称,缺省值为"Dvbbs",如果一个站点中有超过一个缓存组,则需要外部改变这个值。   
'属性:Name 定义缓存对象名称,只写属性。   
'属性:value 读取和写入缓存数据。   
'函数:ObjIsEmpty()判断当前缓存是否过期。   
' 方法:DelCahe(MyCaheName)手工删除一个缓存对象,参数是缓存对象的名称。   
'========================   
Public Reloadtime,MaxCount,CacheName   
Private LocalCacheName,CacheData,DelCount   
 
Private Sub Class_Initialize()   
Reloadtime=14400 '过期时间(单位为分钟)   
CacheName="Dvbbs" '缓存组的总名称   
End Sub   
 
Private Sub SetCache(SetName,NewValue)   
Application.Lock   
Application(SetName) = NewValue   
Application.unLock   
End Sub   
 
Public Property Let Name(ByVal vNewValue) '缓存对象名称   
LocalCacheName=LCase(vNewValue)   
End Property   
 
Public Property Let Value(ByVal vNewValue) '读取和写入缓存数据   
If LocalCacheName<>"" Then   
CacheData=Application(CacheName"_"&LocalCacheName)   
If IsArray(CacheData) Then   
CacheData(0)=vNewValue   
CacheData(1)=Now()   
Else   
ReDim CacheData(2)   
CacheData(0)=vNewValue   
CacheData(1)=Now()   
End If   
SetCache CacheName"_"&LocalCacheName,CacheData   
Else   
Err.Raise vbObjectError + 1, "DvbbsCacheServer", " please change the CacheName."   
End If   
End Property   
 
Public Property Get Value()   
If LocalCacheName<>"" Then   
CacheData=Application(CacheName"_"&LocalCacheName)   
If IsArray(CacheData) Then   
Value=CacheData(0)   
Else   
Err.Raise vbObjectError + 1, "DvbbsCacheServer", " The CacheData Is Empty."   
End If   
Else   
Err.Raise vbObjectError + 1, "DvbbsCacheServer", " please change the CacheName."   
End If   
End Property   
 
Public Function ObjIsEmpty() '判断当前缓存是否过期   
ObjIsEmpty=True   
CacheData=Application(CacheName"_"&LocalCacheName)   
If Not IsArray(CacheData) Then Exit Function   
If Not IsDate(CacheData(1)) Then Exit Function   
If DateDiff("s",CDate(CacheData(1)),Now()) < 60*Reloadtime Then ObjIsEmpty=False   
End Function   
 
Private Sub makeEmpty(SetName) '释放内存   
Application.Lock   
Application(SetName) = Empty   
Application.unLock   
End Sub   
 
Public Sub DelCahe(MyCaheName) '删除缓存   
makeEmpty(CacheName"_"&MyCaheName)   
End Sub   
End Class   
 
'Set WydCache=New Cls_Cache   
'WydCache.Reloadtime=0.5 '定义过期时间 (以分钟为单位)   
'WydCache.CacheName="pages" '定义缓存名   
'IF WydCache.ObjIsEmpty() Then ''判断是否可用(包括过期,与是否为空值)   
'Response.write WydCache.Value   
'Else   
'..................   
'BoardJumpList=xxx   
'WydCache.Value=BoardJumpList '写入内容   
'Response.write BoardJumpList   
'End if   
'   
'mycache.DelCahe(" 缓存名") 删除缓存   
%>