版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
asp缓存类代码
至于缓存的作用,我想我也不用再多说了,它的作用已经很明显,
特别是对于信息量非常大或是全数据库页面的网站,他能很好地利用
主机的内存资源,加速ASP的执行效率,减轻服务器的负担,而动网
在这一方面做得是最突出的,像他现在的dvbbs7.1.0版,更是在缓存
的利用上更上一层楼,前后台大多的*作都和缓存有关,而现在动网里
用的也就是迷城浪子的缓存类,下面列出动网的三大高手写的ASP缓
存类
木鸟写的
复制代码代码如下:
'***
'vbsCache类
a
,属*valid,是否可用,取值前判断
,属*name,cache名,新建对象后赋值
,方法add(值,到期时间),设置cache内容
,属*value,返回cache内容
,属*blempty,是否未设置值
,方法makeEmpty,释放内存,测试用
,方法equal(变量1),判断cache值是否和变量1相同
,方法expires(time),修改过期时间为time
,木鸟2002.12.24
'aspsky/
1***
classCache
privateobj'cache内容
privateexpireTime'过期时间
privateexpireTimeName'过期时间application名
privatecacheName1cache内容application名
privatepath'uri
privatesubclassJnitializeO
path=request.servervariables("urr')
path=left(path,instrRev(path,7n))
endsub
privatesubclass_terminate()
endsub
publicpropertygetblEmpty
,是否为空
ifisempty(obj)then
blEmpty=true
else
blEmpty=false
endif
endproperty
publicpropertygetvalid
,是否可用(过期)
ifisempty(obj)ornotisDate(expireTime)then
valid=false
elseifCDate(expireTime)<nowthen
valid=false
else
valid=true
endif
endproperty
publicpropertyletname(str)
,设置cache名
cacheName=str&path
obj=application(cacheName)
expireTimeName=str&"expires"&path
expireTime=application(expireTimeName)
endproperty
publicpropertyletexpires(tm)
,重设置过期时间
expireTime=tm
application.lock
application(expireTimeName)=expireTime
application.unlock
endproperty
publicsubadd(var,expire)
,赋值
ifisempty(var)ornotisDate(expire)then
exitsub
endif
obj=var
expireTime=expire
application.lock
application(cacheName)=obj
application(expireTimeName)=expireTime
application.unlock
endsub
publicpropertygetvalue
‘取值
ifisempty(obj)ornotisDate(expireTime)then
value=null
elseifCDate(expireTime)<nowthen
value=null
else
value=obj
endif
endproperty
publicsubmakeEmptyO
'释放application
application.lock
application(cacheName)=empty
application(expireTimeName)=empty
application.unlock
obj=empty
expireTime=empty
endsub
publicfunctionequal(var2)
,比较
iftypename(obj)<>typename(var2)then
equal=false
elseiftypename(obj)=nObject"then
ifobjisvar2then
equal=true
else
equal=false
endif
elseiftypename(obj)="Variant()"then
ifjoin(obj,"A")=join(var2,"A")then
equal=true
else
equal=false
endif
else
ifobj=var2then
equal=true
else
equal=false
endif
endif
endfunction
endclass
木鸟类例子vbsCache类
a
,属*valid,是否可用,取值前判断
,属*name,cache名,新建对象后赋值
,方法add(值,到期时间),设置cache内容
,属*value,返回cache内容
,属*blempty,是否未设置值
,方法makeEmpty,释放内存,
,方法DelCahe,删除内存
,方法equal(变量1),判断cache值是否和变量1相同
,方法expires(time),修改过期时间为time
,用法
setmyCache=NewCache
myC="BoardJumpList",定义缓存名
ifmyCache.validthen'判断是否可用(包括过期,与是否为空值)
response.writemyCache.value'输出
else
BoardJumpList=xxx
myCache.addBoardJumpListdateaddC'n'^O^ow),写入缓存
xxx.add内容,过期时间
response.writeBoardJumpList'输出
endif
myCache.makeEmpty。释放内存
mycache.DelCahe。删除缓存
迷城浪子写的
复制代码代码如下:
ClassCls_Cache
Rem==================使用说明
Rem二本类模块是动网先锋原创,作者:迷城浪子。如采用本类
模块,请不要去掉这个说明。这段注释不会影响在行的速度。
Rem二作用:缓存和缓存管理类
Rem二公有变量:Reloadtime过期时间(单位为分钟)缺省值为
14400
Rem=MaxCount缓存对象的最大值,超过则自动删除使用次数
少的对象。缺省值为300
Rem=CacheName缓存组的总名称,缺省值为"Dvbbs",如果一
个站点中有超过一个缓存组,则需要外部改变这个值。
Rem=属*:Name定义缓存对象名称,只写属*。
Rem=属*:value读取和写入缓存数据。
Rem二函数:ObjlsEmptyO判断当前缓存是否过期。
Rem二方法:DelCahe(MyCaheName)手工删除一个缓存对象,
参数是缓存对象的名称。
Rem========================
PublicReloadtime^axCountCacheName
PrivateLocalCacheName,CacheData,DelCount
PrivateSubClass_Initialize()
Reloadtime=14400
CacheName="Dvbbsn
EndSub
PrivateSubSetCache(SetName,NewValue)
Application.Lock
Application(SetName)=NewValue
Application.unLock
EndSub
PrivateSubmakeEmpty(SetName)
Application.Lock
Application(SetName)=Empty
Application.unLock
EndSub
PublicPropertyLetName(ByValvNew\/alue)
LocalCacheName=LCase(vNewValue)
EndProperty
PublicPropertyLetValue(ByValvNewValue)
IfLocalCacheNameo""Then
CacheData=Application(CacheName&"_"&LocalCacheName)
IfIsArray(CacheData)Then
CacheData(O)=vNewValue
CacheData(l)=Now()
Else
ReDimCacheData(2)
CacheData(O)=vNewValue
CacheData(l)=Now()
Endlf
SetCacheCacheName&w_"&LocalCacheName,CacheData
Else
Err.RaisevbObjectError+l/'DvbbsCacheServer"/'pleasechang
etheCacheName."
Endlf
EndProperty
PublicPropertyGetValueO
IfLocalCacheNameo""Then
CacheData=Application(CacheName&"_"&LocalCacheName)
IfIsArray(CacheData)Then
Value=CacheData(O)
Else
Err.RaisevbObjectError+l/'DvbbsCacheServer'Y'TheCacheDa
talsEmpty."
Endlf
Else
Err.RaisevbObjectError+l/'DvbbsCacheServer"/'pleasechang
etheCacheName."
Endlf
EndProperty
PublicFunctionObjlsEmptyQ
ObjIsEmpty=True
CacheData=Application(CacheName&"_"&LocalCacheName)
IfNotIsArray(CacheData)ThenExitFunction
IfNotIsDate(CacheData(l))ThenExitFunction
IfDateDiff("s"/CDate(CacheData(l))/Now())<60*ReloadtimeT
hen
ObjIsEmpty=False
Endlf
EndFunction
PublicSubDelCahe(MyCaheName)
makeEmpty(CacheName&"_,,&MyCaheName)
EndSub
EndClass
迷城浪子类例子
SetWydCache=NewCls_Cache
WydCache.Reloadtime=0.5'定义过期时间(以分钟为单会)
WydCache.CacheName=',pagesn'定义缓存名
IFWydCache.ObjlsEmptyOThen',判断是否可用(包括过期,
与是否为空值)
Response.writeWydCache.Value
Else
BoardJumpList=xxx
WydCache.Value=BoardJumpList'写入内容
Response.writeBoardJumpList
Endif
mycache.DelCahe("缓存名")删除缓存
slightboy写的'========================
复制代码代码如下:
,clsCache.asp
==begin:2004-6-2621:51:47
==copyright:slightboy(C)1998-2004
==email:slightboy@msn
,DimApplication(2)
,Application(0)Counter计数器
,Application(l)dateTime放置时间
,Application⑵Content缓存内容
PublicPREFIX
PublicPREFIX_LENGTH
PrivateSubClass_Initialize()
PREFIX="Cached:"
PREFIX_LENGTH=7
EndSub
PrivateSubClass_Terminate
EndSub
’设置变量
PublicPropertyLetCache(ByRefKey,ByRefContent)
Dimltem(2)
Item(O)=O
Item(l)=Now()
IF(IsObject(Content))Then
SetItem(2)=Content
Else
Item(2)=Content
EndIF
Application.Unlock
Application(PREFIX&Key)=Item
Application.Lock
EndProperty
,取出变量计数器++
PublicPropertyGetCache(ByRefKey)
Dimltem
Item=Application(PREFIX&Key)
IF(IsArray(Item))Then
IF(IsObject(Item))Then
SetCache=Item(2)
Else
Cache=Item(2)
EndIF
Application(PREFIX&Key)(0)=Application(PREFIX&Key)(0)+l
Else
Cache=Empty
EndIF
EndProperty
,检查缓存对象是否存在
PublicPropertyGetExists(ByRefKey)
Dimltem
Item=Application(PREFIX&Key)
IF(IsArray(Item))Then
Exists=True
Else
Exists=False
EndIF
EndProperty
,得到计数器数值
PublicPropertyGetCounter(ByRefKey)
Dimltem
Item=Application(PREFIX&Key)
IF(IsArray(Item))Then
Counter=ltem(0)
EndIF
EndProperty
’设置计数器时间
PublicRropertyLetdateTime(ByRefKey,ByRefSetdateTime)
Dimltem
Item=Application(PREFIX8iKey)
IF(IsArray(Item))Then
Item(l)=SetdateTime
EndIF
EndProperty
,得到计数器时间
PublicPropertyGetdateTime(ByRefKey)
Dimltem
Item=Application(PREFIX&Key)
IF(IsArray(Item))Then
dateTime=Item(l)
EndIF
EndProperty
,重置计数器
PublicSubResetCounterQ
DimKey
Dimltem
Application.Unlock
ForEachKeyinApplication.Contents
IF(Left(Key/PREFIX_LENGTH)=PREFIX)Then
Item=Application(Key)
Item(0)=0
Application(Key)=Item
EndIF
Next
Application.Lock
EndSub
,删除某以缓存
PublicSubClear(ByRefKey)
Application.Contents.Remove(PREFIX&Key)
EndSub
,清空没有使用的缓存
PublicSubClearUnused()
DimKey,Keys,KeyLength,Keyindex
ForEachKeyinAppl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年甘肃省平凉市法检系统书记员招聘笔试参考试题及答案详解
- 2026财达证券股份有限公司深圳分公司招聘1人考试备考试题及答案详解
- 2026广东江门市五邑大学招聘聘用制职员13人(第三批)考试备考题库及答案详解
- 2026年马鞍山含山县运漕镇公开招聘村后备干部8名笔试模拟试题及答案详解
- 2026年安徽省蚌埠市法检系统书记员招聘笔试参考试题及答案详解
- 2026-2027广东云浮市郁南县南都学校招聘编外人员21人笔试备考题库及答案详解
- 2026年芜湖无为市姚沟镇公开招聘村级后备干部6名考试备考题库及答案详解
- 2026上海普源精电科技股份有限公司校园招聘笔试备考试题及答案详解
- 2026江苏南京大学招聘XZ2026-370物理学院助理笔试参考题库及答案详解
- 2026云南临沧云县零工市场招聘销售顾问2人笔试模拟试题及答案详解
- KTV消防安全应急预案
- 2026弥勒市财政局公开招聘编外工作人员(3人)考试备考题库及答案详解
- 无砟轨道工艺性试验总结讲诉
- 2026-2030中国AKT抑制剂行业市场现状分析及竞争格局与投资发展研究报告
- 建筑行业工程质量检测与监管方案
- 药品质量风险管理规程培训
- 外墙面保温砂浆施工监理实施细则
- 肺部健康防护指南
- 2025神介学苑历年考核真题及答案全收录
- 2026年民间借贷合同纠纷法律问题研究
- 2025版肉毒中毒诊治急诊专家共识课件
评论
0/150
提交评论