一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - ASP javascript Application對象的Contents和StaticObjects做Cache的一些經驗

ASP javascript Application對象的Contents和StaticObjects做Cache的一些經驗

2019-09-27 09:09asp教程網 ASP教程

ASP javascript: Application對象的Contents和StaticObjects做Cache的一些結論。 ASP封裝Cache對象,一般都是基于Application的,

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的一半??磥頃r間主要花費在取得'引用',而不是StaticObjects內存區被保護慢。StaticObjects相對Contents安全措施更好,因為里面要存對象。 

  靠Dictionary強大的功能,適當的封裝一下,用put(),get(),contains()等等流行方法訪問,就是一個強大的Cache了。 

 ////備注 
  我封裝了一個.sct組件;asp javascript寫的,有空發上來,今天到此。 

  測試了取得Contens和StaticObjects引用的速度,在20次時都是0ms,100次大約5倍速度,500-1500次是10倍速度差距。不過取得后存取不受影響。 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品啪在线观看国产日本 | 动态图啪啪120秒免费看 | 亚洲激情网站 | 日韩在线一区二区三区免费视频 | 婷婷日韩 | 国产中文在线视频 | 成人黄色免费网站 | 国产理论片在线观看 | 狠狠婷婷综合缴情亚洲 | 成熟女人50岁一级毛片不卡 | 精品日韩二区三区精品视频 | 欧美人体高清在线观看ggogo | 四虎永久在线精品免费影视 | 高跟丝袜hdvideossex | 成年人在线观看视频 | 色哟哟观看 | 成全视频在线观看免费 | 经典三级四虎在线观看 | 亚洲国产在| 亚洲成年网站在线观看 | 免费观看视频在线播放 | 久久国产精品人妻中文 | 卫生间被教官做好爽HH视频 | 精新精新国产自在现 | 99久精品 | 四虎国产 | 无人区尖叫之夜美女姐姐视频 | 免费看视频高清在线观看 | 久久草福利自拍视频在线观看 | 美女脱了内裤让男桶爽 | 久久理论片迅播影院一级 | 成人免费国产欧美日韩你懂的 | 精品一区二区91 | 美女禁区视频无遮挡免费看 | 欧美香蕉人人人人人人爱 | 国产国语在线播放视频 | 1769国产精品免费视频 | 成人看片免费无限观看视频 | 美女无内裤下部黄 | 久久综合狠狠综合久久综合88 | 四虎永久免费地址在线网站 |