<
%
' **********************************************
' 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 ' 释放对象
% >
' **********************************************
' 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 ' 释放对象
% >