迷城浪子缓存类使用方法详解
最近很多人问怎么使用迷城浪子的缓存类,其实我在上一篇文章中已经做出了解答。
但是只是略微的带过了一下,也不是很看得懂应该如何操作。
今天在这里再详细解答一下。
迷城浪子的缓存类其实就是一个全局变量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 %> |
现在能够看明白了么?
ASP 缓存技术及使用方法详解 ASP Fix、Int、Round、CInt函数使用说明
Cls_Cache.asp文件中的变量CacheName,几个地方都掉了个连接符号&
已经改过来了,谢谢这位兄台。