asp缓存类代码资料_第1页
asp缓存类代码资料_第2页
asp缓存类代码资料_第3页
asp缓存类代码资料_第4页
asp缓存类代码资料_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论