在JScript中使用缓存技术的实际代码_ASP教程-查字典教程网
在JScript中使用缓存技术的实际代码
在JScript中使用缓存技术的实际代码
发布时间:2016-12-29 来源:查字典编辑
摘要:在使用VBScript时,我们可以用Application缓存数组来实现缓存,例:程序代码:复制代码代码如下:Dimrs,arrrs.Ope...

在使用VBScript时,我们可以用Application缓存数组来实现缓存,例:

程序代码:

复制代码 代码如下:

Dimrs,arr

rs.Openconn,sql,1,1

arr=rs.GetRows()

Application.Lock()

Application("cache")=arr

Applicatoin.UnLock()

在VBScript里,数组是可以存到Application对象里的,但是如果ASP的语言选择为JScript的话,那么就有些不妙了,我们在使用Application储存一个数组时,会出现以下错误:

引用内容:

Applicationobject,ASP0197(0x80004005)

Disallowedobjectuse

Cannotaddobjectwithapartmentmodelbehaviortotheapplicationintrinsicobject.

在微软的知识库可以找到具体原因如下:

引用内容:

JScriptarraysareconsideredtobe"Apartment"COMcomponents.OnlyComponentObjectModel(COM)componentsthataggregatetheFreeThreadedMarshaler(FTM)canbeassignedtoApplicationscopewithinanInternetInformationServer(IIS)5.0ASPpage.Becausean"Apartment"componentcannotaggregatetheFTM(itcannotallowadirectpointertobepassedtoitsclients,unlikea"BothwithFTM"object),JScriptarraysdonotaggregatetheFTM.Therefore,JScriptarrayscannotbeassignedtoApplicationscopefromanASPpage.

以上描述引用自:PRB:ErrorWhenYouStoreaJScriptArrayinApplicationScopeinIIS5.0

因此,为了解决这个问题,在Google里找了一大会,终于找到了一篇文章《Application对象的Contents和StaticObjects做Cache的一些结论》,解决了这个问题,方法就是使用Application.StaticObject存放一个Scripting.Dictionary对象,然后再使用Scripting.Dictionary对象来存放需要缓存的数据。

据此,写了一个操作缓存的类,实现put、get、remove和clear方法,使用之前,需要在global.asa中添加一个object:

程序代码:

<objectid="xbsCache"runat="server"scope="Application"progid="Scripting.Dictionary"></object>

类的实现如下:

复制代码 代码如下:

<scriptlanguage="JScript"runat="server">

/**

Title:cacheoperateclass

Description:operatesystemcache

@Copyright:Copyright(c)2007

@Author:xujiwei

@Website:http://www.xujiwei.cn/

@Version:1.0

@Time:2007-06-2912:03:45

**/

varxbsCache={

get:function(key){

returnApplication.StaticObjects("xbsCache").Item("Cache."+key);

},

put:function(key,data){

Application.Lock();

Application.StaticObjects("xbsCache").Item("Cache."+key)=data;

Application.UnLock();

},

remove:function(key){

Application.Lock();

Application.StaticObjects("xbsCache").Remove("Cache."+key);

Application.UnLock();

},

clear:function(){

Application.Lock();

Application.StaticObjects("xbsCache").RemoveAll();

Application.UnLock();

}

}

</script>

如此,就完成了ASP中使用JScript时的缓存实现。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新ASP教程学习
    热门ASP教程学习
    编程开发子分类