探讨一种改进AJAX性能的方法 打印 E-mail
  2007-12-15

一、 引言
        在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
_
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
_
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()的次数。

发表评论
网友评论
sdg
作者 访客 于 2008-11-14 10:56:03
中铁物流
中铁快运公司/ubb1114 
上海中铁快运
上海华硕笔记本黑屏维修
上海华硕笔记本暗屏维修/  
上海华硕笔记本进水维修
上海华硕笔记本不通电不开机不亮维修
上海华硕笔记本白屏维修
上海华硕笔记本加电不亮维修
上海华硕笔记本进水不开机维修
上海华硕笔记本液晶屏维修
上海华硕笔记本死机维修/  
上海华硕笔记本键盘维修/  
上海华硕笔记本光驱维修/  
上海华硕笔记本硬盘维修/  
上海东芝笔记本花屏黑屏暗屏白屏维修
上海东芝笔记本维修地址电话
上海东芝笔记本花屏维修/  
上海东芝笔记本黑屏维修
上海东芝笔记本暗屏维修/  
上海东芝笔记本进水维修
上海东芝笔记本不通电不开机不亮维修
上海东芝笔记本白屏维修
上海东芝笔记本进水不开机维修
上海东芝笔记本进水屏幕维修
上海东芝笔记本液晶屏维修
上海东芝笔记本死机维修/  
上海东芝笔记本屏幕维修/  
上海东芝笔记本键盘维修/ ubb1114 
上海东芝笔记本光驱维修/  
上海东芝笔记本硬盘维修
上海富士通笔记本花屏黑屏暗屏白屏维修
上海富士通笔记本维修地址电话
上海富士通笔记本花屏维修/  
上海富士通笔记本黑屏维修
上海富士通笔记本暗屏维修/  
上海富士通笔记本进水维修
上海富士通笔记本不通电不开机不亮维修
上海富士通笔记本白屏维修
上海富士通笔记本进水主板维修
上海富士通笔记本液晶屏维修
上海富士通笔记本死机维修/  
上海富士通笔记本键盘维修/  
上海富士通笔记本光驱维修/  
上海清华紫光笔记本维修
上海方正笔记本维修
上海BENQ笔记本花屏黑屏暗屏白屏维修
上海BENQ笔记本维修地址电话
上海BENQ笔记本花屏维修/  
上海BENQ笔记本黑屏维修
上海BENQ笔记本暗屏维修/  
上海BENQ笔记本进水维修
上海BENQ笔记本液晶屏维修
上海BENQ笔记本显示屏维修
上海BENQ笔记本死机维修/  
上海BENQ笔记本键盘维修/  
上海BENQ笔记本光驱维修
上海笔记本维修电话
上海笔记本维修地址
上海笔记本主板维修
上海笔记本黑屏白屏暗屏维修
上海笔记本键盘维修/  
上海笔记本键盘维修
上海笔记本花屏维修
上海笔记本黑屏维修
上海笔记本暗屏维修
上海笔记本进水维修
上海笔记本光驱维修
上海笔记本白屏维修
上海笔记本液晶屏维修
上海U盘数据恢复
上海移动硬盘数据恢复
上海液晶显示器维修/ubb1114 
/注册公司
/公司注册
/上海公司注册
/上海注册公司
/注册上海公司
/汽车租赁  
/上海租车  
/上海汽车租赁 
/上海租车公司 
/上海租车
/汽车租赁
/注册公司
/中铁快运
/中铁物流
/上海租车
/注册公司
/注册公司
/上海保洁
/中铁快运公司
/上海笔记本维修
/上海保洁
/上海保洁
/注册公司
/上海中铁快运
/汽车租赁
/上海保洁
/上海笔记本维修
/上海租车
/汽车租赁
/注册公司
/中铁快运
/中铁物流
/上海租车
/注册公司
/注册公司
/上海保洁
/中铁快运公司
/上海笔记本维修
/上海保洁
/上海保洁
/注册公司
/上海中铁快运
/汽车租赁
/上海保洁
/上海笔记本维修/ubb1114 
onestoptown
作者 访客 于 2008-11-20 12:26:55
shoes online buy shoes sandal shoes slippers shoes ecco shoes rockport shoes
steve madden shoes - puma shoes -  
nike shoes  
nike shoes replica  
replica nike shoes
air jordan shoes  
replica watches rolex  
replica watch - rolex watch - fake rolex watches
oyster rolex  
rolex watches
replica watches
replica rolex watches - rolex replica - watches online
oyster rolex watch - quartz watch fake - nike shoes - nike shoes replica - replica nike shoes
air jordan shoes - replica watches rolex - replica watch - rolex watch - fake rolex watches
oyster rolex - rolex watches - replica watches - replica rolex watches - rolex replica - watches online
oyster rolex watch - quartz watch fake -  
best replica watches 
rolex watches - replica watches - replica nike shoes - jordan shoes - watches online
oyster rolex watch - quartz shoes fake -  
nike shoeses

发表评论
用户访客
标题
BBCode:Web AddressEmail AddressBold TextItalic TextUnderlined TextQuoteCodeOpen ListList ItemClose List
评论



最近更新 ( 2007-12-16 )
< 上一篇   下一篇 >