ASP实现缓存类无错版 |
本文标签:ASP实现缓存类无错版 <% ********************************************** vbs Cache类 属性valid,是否可用,取值前判断 属性name,cache名,新建对象后赋值 方法add(值,到期时间),设置cache内容 属性value,返回cache内容 属性blempty,是否未设置值 方法makeEmpty,释放内存,测试用 方法equal(变量1),判断cache值是否和变量1相同 方法expires(time),修改过期时间为time 木鸟写的缓存类 ********************************************** class Cache private obj cache内容 private expireTime 过期时间 private expireTimeName 过期时间application名 private cacheName cache内容application名 private path uri private sub class_initialize() path=request.servervariables("url") path=left(path,instrRev(path,"/")) end sub private sub class_terminate() end sub public property get blEmpty 是否为空 if isempty(obj) then blEmpty=true else blEmpty=false end if end property public property get valid 是否可用(过期) if isempty(obj) or not isDate(expireTime) then valid=false elseif CDate(expireTime)<now then valid=false else valid=true end if end property public property let name(str) 设置cache名 cacheName=str & path obj=application(cacheName) expireTimeName=str & "expires" & path expireTime=application(expireTimeName) end property public property let expires(tm) 重设置过期时间 expireTime=tm application.lock application(expireTimeName)=expireTime application.unlock end property public sub add(var,expire) 赋值 if isempty(var) or not isDate(expire) then exit sub end if obj=var expireTime=expire application.lock application(cacheName)=obj application(expireTimeName)=expireTime application.unlock end sub public property get value 取值 if isempty(obj) or not isDate(expireTime) then value=null elseif CDate(expireTime)<now then value=null else value=obj end if end property public sub makeEmpty() 释放application application.lock application(cacheName)=empty application(expireTimeName)=empty application.unlock obj=empty expireTime=empty end sub public function equal(var2) 比较 if typename(obj)<>typename(var2) then equal=false elseif typename(obj)="Object" then if obj is var2 then equal=true else equal=false end if elseif typename(obj)="Variant()" then if join(obj,"^")=join(var2,"^") then equal=true else equal=false end if else if obj=var2 then equal=true else equal=false end if end if end function end class dim content,myCache Set myCache = new Cache myCache.name="sofoisndoffo" 定义缓存名称 if myCache.valid then 如果缓存有效 content=myCache.value 读取缓存内容 else content="sosuo8.com测试" 大量内容,可以是非常耗时大量数据库查询记录集 myCache.add content,dateadd("n",1000,now) 将内容赋值给缓存,并设置缓存有效期是当前时间+1000分钟 end if Response.Write(content) myCache.makeEmpty() set clsCache=nothing 释放对象 %> |