麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > AJAX > 正文

探討一種AJAX性能的改進方法

2024-07-21 02:28:49
字體:
來源:轉載
供稿:網友

  一、 引言

  在web表單中,我們使用ajax來從客戶端(通過javascript)調用服務端方法,而在ajax內部則進行xmlhttprequest調用。我測試了一些以不同方式實現的ajax函數。另外,我還監控分析了進行ajax調用的性能和生命周期。結果,我發現在web表單中使用ajax時存在一些嚴重的問題。不過,我也找到了這些問題的一種解決方法。在本文中,我正是想與各位分析這一問題及其相應的解決方案。

  二、 在使用ajax時所遇到的性能問題

  對于每一個ajax調用來說,我們都要創建包含ajax方法的類的一個實例。另外,如果我們在類級上使用new關鍵字的話,我們還要為字段、屬性及其它類級的變量創建實例。

  三、 實現方案

  我創建了一個工程,它包含兩個web表單:webform1.aspx和webform2.aspx,還有一個類student.vb。這兩部分code-behind頁面都使用了一個ajax函數getdata()和一個student類型的公共變量。借助于mxlogger類,我記錄下每一個階段的執行流程。

  注意:webform2.aspx的ajax函數getdata()是共享的,而在webform1中,它不是共享的。

'student.vb
public class student
 sub new()
  mxlogger.addlog("from student.constructor")
 end sub
 dim _name as string
 public property name() as string
  get
   return _name
  end get
  set(byval value as string)
   _name = value
  end set
 end property
end class
'webform1.aspx.vb
public class webform1
public student as new student
sub new()
 mxlogger.addlog("from webform1.constructor")
end sub
<ajax.ajaxmethod(ajax.httpsessionstaterequirement.read)> _
public function getdata() as string
 mxlogger.addlog("from webform1.ajax.getdata()")
 return "i m a non shared function"
end function
end class
'webform2.aspx.vb
public class webform2
public student as new student
sub new()
 mxlogger.addlog("from webform2.constructor")
end sub
<ajax.ajaxmethod(ajax.httpsessionstaterequirement.read)> _
public shared function getdata() as string
 mxlogger.addlog("from webform2.ajax.getdata()")
 return "i m a shared function"
end function
end class

  四、 測試應用程序

  · 測試用例1:

  運行webform1.aspx并且從javascript中調用getdata() ajax函數三次。

  · 測試用例2:

  運行webform2.aspx并且從javascript中調用getdata()ajax函數三次。

  對于上面的測試用例,我得到如下的日志輸出數據:

//請注意,為了解釋之目的,我在其中手工加入了一些日志行
log for the test case 1: ( non ajax shared function )
-------while loading the page--------
5/9/2006 10:37:29 am>>from student.constructor
5/9/2006 10:37:29 am>>from webform1.constructor
5/9/2006 10:37:29 am>>from webform1.ajax.getdata()
-------first call for getdata()--------
5/9/2006 10:37:29 am>>from student.constructor
5/9/2006 10:37:29 am>>from webform1.constructor
5/9/2006 10:37:29 am>>from webform1.ajax.getdata()
-------second call for getdata()--------
5/9/2006 10:37:29 am>>from student.constructor
5/9/2006 10:37:29 am>>from webform1.constructor
5/9/2006 10:37:29 am>>from webform1.ajax.getdata()
-------third call for getdata()--------
5/9/2006 10:37:30 am>>from student.constructor
5/9/2006 10:37:30 am>>from webform1.constructor
5/9/2006 10:37:30 am>>from webform1.ajax.getdata()
log for the test case 2: ( shared ajax function )
-------while loading the page--------
5/9/2006 10:37:09 am>>from student.constructor
5/9/2006 10:37:09 am>>from webform2.constructor
5/9/2006 10:37:09 am>>from webform2.ajax.getdata()
-------first call for getdata()--------
5/9/2006 10:38:11 am>>from webform2.ajax.getdata()
-------second call for getdata()--------
5/9/2006 10:38:11 am>>from webform2.ajax.getdata()
-------third call for getdata()--------
5/9/2006 10:38:11 am>>from webform2.ajax.getdata()

  我們可以看到,在上面的日志輸出數據中,對于測試用例1來說,我們能夠看到更多的來自于webform1和student的構造器的日志數據。

  五、 結論

  我的建議是,在所有可能的地方,我們應該使用針對于ajax的共享方法,以便它不會創建更多的web表單實例和類級的字段。這樣以來,我們就可以減少從gc中調用finalize()的次數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美乱论 | 欧产日产国产精品99 | 97黄色网 | 亚洲欧美成aⅴ人在线观看 av免费在线播放 | 最新中文字幕日本 | 97中文| 久草在线观看福利 | 国产毛片自拍 | 做爰裸体激情2 | 国产69精品99久久久久久宅男 | 久久草在线观看视频 | 久久久久久久久久亚洲精品 | 婷婷中文字幕一区二区三区 | 成人精品视频网站 | 亚洲性生活免费视频 | 午夜视频久久 | 欧美成人精品一区二区 | 99精品电影 | 久久精品一区二区三区不卡牛牛 | 免费午夜视频在线观看 | 99热1| 欧洲黄色一级视频 | 国产亚洲精品久久久久5区 男人天堂免费 | 欧美四级在线观看 | 免费黄色小网站 | 日韩毛片毛片久久精品 | 男女羞羞在线观看 | 国产亚洲精品一区二区三区 | japanesexxxxxxxhd| 欧美一级特黄特色大片免费 | 亚洲欧美日韩中文在线 | 免费国产羞羞网站视频 | 精品国产一区二区三区四 | 国产精品久久久久久久久久了 | 欧美高清视频一区 | 欧美成人精品欧美一级乱黄 | 精品一区二区三区免费看 | www.9191.com | 久久丝袜脚交足黄网站免费 | 日本精品婷婷久久爽一下 | 午夜影视一区二区 |