ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验

Application对象内置集合有为存放简单类型设计的Contents,默认Application("key")就可以使用。

不过Application.Contents不能存放对象,可以存vbs数组,但是在javascript下甚至数组都不能放。

使用Application.Contents时,只能用丑陋的如:

for(var i=0;i<15000;i++){

    Application.Lock();

       // Application.Contents(i)="sdfdsffdsaf";

        Application(i)="sdfdsffdsaf";

Application.Unlock();}

在这里往Application.Contents存放了1.5w个String,共花费时间234ms.

改用Application.StaticObjects后:

 定义一个Dictionary作为StaticObject,用于存放数据,因为StaticObject是不允许直接访问的。

  <object id="dict" runat="server" scope="Application" progid="Scripting.Dictionary"></object>

Scripting.Dictionary本身的速度很快,不会对比较StaticObjects集合速度造成太大影响.

Dictionary的速度:

    var d=new ActiveXObject("Scripting.Dictionary");

    for(var i=0;i<15000;i++){

        d.Item(i)="sdfdsffdsaf";}

  1.5w次插值,172ms

 当然自定义对象var d=new Object(); d[i]=..更快,1.5w次只要80-90ms,不过功能弱多了,所以还是用字典.

下面看正式测试

    for(var i=0;i<15000;i++){

        Application.Lock();

        Application.StaticObjects("dict").Item(i)="sdfdsffdsaf";

        Application.Unlock();}

 时间长达6953ms,初步判断StaticObjects集合的访问速度是不能满足Cache的要求了,这个速度和ADO OLEDB读sql server 2000的时间相差无几。

不过还不打算马上放弃,因为StaticObjects的优势在于可以存放Object,而Dictionary也可以存放其它对象,这样可以做为缓存对象,而不仅仅是数据。

我在Application.StaticObjects("dict")里面再放入一个Object:

  Application.StaticObjects("dict").Item("o")=new Object();

for(var i=0;i<15000;i++){

       Application.Lock();

       Application.StaticObjects("dict").Item("o")[i]="sdfdsffdsaf";

       Application.Unlock();}

6656ms,快了点点.多一层Object并没有降低速度,那么速度的慢并非结构复杂,而是StaticObjects的访问占用。

把dict的引用预存

 var t=Application.StaticObjects("dict");

for(var i=0;i<15000;i++){

       Application.Lock();

       t.Item("o")[i]="sdfdsffdsaf";

       Application.Unlock();}

3094ms,成功的减少一半多点的时间,js中屡试不爽的预存策略,要是把t.Item("o")也预存呢?

var t=Application.StaticObjects("dict").Item("o");

for(var i=0;i<15000;i++){

       Application.Lock();

       t[i]="sdfdsffdsaf";

       Application.Unlock();}

125ms,终于成功了,只有Application.Contents的一半。看来时间主要花费在取得'引用',而不是StaticObjects内存区被保护慢。StaticObjects相对Contents安全措施更好,因为里面要存对象。

靠Dictionary强大的功能,适当的封装一下,用put(),get(),contains()等等流行方法访问,就是一个强大的Cache了。

////备注

  我封装了一个.sct组件;asp javascript写的,有空发上来,今天到此。

测试了取得Contens和StaticObjects引用的速度,在20次时都是0ms,100次大约5倍速度,500-1500次是10倍速度差距。不过取得后存取不受影响。

时间: 2024-09-28 06:01:09

ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验的相关文章

ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验_应用技巧

Application对象内置集合有为存放简单类型设计的Contents,默认Application("key")就可以使用. 不过Application.Contents不能存放对象,可以存vbs数组,但是在javascript下甚至数组都不能放. 使用Application.Contents时,只能用丑陋的如: for(var i=0;i<15000;i++){     Application.Lock();        // Application.Contents(i)

ASP的Application对象和Session对象

本章已经讨论了两个ASP对象:Application对象和Session对象,因此能够访问Application对象和Session对象提供的集合.方法.属性和事件.本节将从程序设计的角度对这两个对象进行研究.· 当载入ASP DLL并响应对一个ASP网页的第一个请求时,创建Application对象.该对象提供一个存储场所,用来存储对于所有访问者打开的所有网页都可用的变量和对象.· 当访问者首次从站点请求一个ASP页面时,为他创建一个Session对象,并保持有效直到缺省的超时周期(或由脚本确

解析ASP的Application和Session对象

application|session|对象 在已经发表的系列文章中我们已经讨论了两个ASP对象:Application对象和Session对象,因此能够访问Application对象和Session对象提供的集合.方法.属性和事件.本节将从程序设计的角度对这两个对象进行研究. · 当载入ASP DLL并响应对一个ASP网页的第一个请求时,创建Application对象.该对象提供一个存储场所,用来存储对于所有访问者打开的所有网页都可用的变量和对象. · 当访问者首次从站点请求一个ASP页面时,

ASP的Application和Session对象详解(一)

在已经发表的系列文章中我们已经讨论了两个ASP对象:Application对象和Session对象,因此能够访问Application对象和Session对象提供的集合.方法.属性和事件.本节将从程序设计的角度对这两个对象进行研究. · 当载入ASP DLL并响应对一个ASP网页的第一个请求时,创建Application对象.该对象提供一个存储场所,用来存储对于所有访问者打开的所有网页都可用的变量和对象. · 当访问者首次从站点请求一个ASP页面时,为他创建一个Session对象,并保持有效直到

ASP入门教程-Application对象概述

一.Application对象概述 当载入ASP DLL并响应对一个ASP网页的第一个请求时,创建Application对象.该对象提供一个存储场所,用来存储对于所有访问者打开的所有网页都可用的变量和对象 可以使用 Application 对象在给定的应用程序的所有用户之间共享信息.基于 ASP 的应用程序同所有的 .asp 文件一样在一个虚拟目录及其子目录中定义.因为多个用户可以共享 Application 对象,所以必须要有 Lock 和 Unlock 方法以确保多个用户无法同时改变某一属性

javascript asp教程第十一课--Application 对象_ASP基础

Overview: The Application Object represents a collection of ASP pages. The Application object has zero (0) properties, two (2) collections, two (2) methods, and two (2) events. Get Started: Below are a couple scripts for lesson11. <%@LANGUAGE="Jav

javascript asp教程第十一课--Application 对象

Overview: The Application Object represents a collection of ASP pages. The Application object has zero (0) properties, two (2) collections, two (2) methods, and two (2) events. Get Started: Below are a couple scripts for lesson11. <%@LANGUAGE="Jav

ASP教程:简单学习掌握ASP Application 对象

application|对象|教程 在一起协同工作以完成某项任务的一组ASP文件被称作应用程序(application).ASP中的Application 对象用来将这些文件捆绑在一起. Application 对象 web上的某个应用程序可以是一组ASP文件.这些ASP文件一起协同工作来完成某项任务.ASP中的Application对象用来把这些文件捆绑在一起. Application对象用于存储和访问来自任何页面的变量,类似于session对象.不同之处在于,所有的用户分享一个Applica

ASP Application对象教程

在ASP Application对象是用来之间的信息共享所有用户的特定ASPApplication程序.所有的ASP文件在一个虚拟目录在IIS中的一部分,同一个ASPApplication程序. 该Application.Contents集合包含的所有项目,还增加了ASPApplication对象与ASP脚本的命令. 该Application.StaticObjects集合包含所有的物体,还增加了ASP Application程序对象的<OBJECT>标记. 您可以储存变数纳入Applicat