明凯博客

关注网站技术,一个特立独行的程序员

迷城浪子缓存类使用方法详解

最近很多人问怎么使用迷城浪子的缓存类,其实我在上一篇文章中已经做出了解答。
但是只是略微的带过了一下,也不是很看得懂应该如何操作。

今天在这里再详细解答一下。

ASP 缓存技术及使用方法详解

迷城浪子的缓存类其实就是一个全局变量application,
但是application是不会过期的,他只是扩充了这个功能,即把数据加创建日期合成一个2唯数组放进application中而已。
用的时候先取出值,value(0)是存放的数据,value(1)是创建日期,
取出来后先判断value(1)是否过期,没过期就直接使用value(0),否则读去数据库重新把最新数据存到value(0)中。

下面给出具体的使用方法:

缓存类文件Cls_Cache.asp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
< %    
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

测试缓存类的文件test.asp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--#include file="Cls_Cache.asp" -->
< %
Dim myCache,content
Set myCache=New Cls_Cache
myCache.Reloadtime=1                  '设置过期时间,单位为1分钟
myCache.CacheName = "myCache"         '缓存主名字.
myCache.Name="tempCache"              '缓存副名字
If myCache.ObjIsEmpty() Then          '但该缓存为空时设置缓存.
    content = "测试"
    myCache.value = content
Else
    content=myCache.value '读取缓存
End If
Set myCache = Nothing
Response.Write content
%>

现在能够看明白了么?

, , ,

相关文章

2 条评论 “迷城浪子缓存类使用方法详解

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注