欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP实现缓存类无错版

程序员文章站 2022-05-03 13:05:50
<%  '**********************************************  'vbs cache类 '&n...
<% 
'********************************************** 
'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 '释放对象
%>