ASP缓存类无错版

来源:互联网 发布:搭配衣服的软件 编辑:程序博客网 时间:2024/04/28 23:13
<
'********************************************** 
'
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 '释放对象
%>
 
原创粉丝点击