探讨一种改进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()的次数。

发表评论
网友评论
lk
作者 访客 于 2008-08-04 15:38:42
移民 
投资移民 
加拿大移民 
技术移民 
移民加拿大 
澳洲技术移民 
德国移民 
移民澳洲 
澳洲移民 
出国移民 
移民出国 
英国移民 
澳大利亚移民 
加拿大投资移民 
加拿大技术移民 
美国留学 
法国留学 
北欧留学 
瑞典留学 
芬兰留学 
澳洲留学 
除湿机 
抽湿机 
工业除湿机 
空气净化器 
空气净化机 
步进电机 
联轴器 
真空泵 
工作服 
职业装 
北京工作服 
定做工作服 
北京二手空调回收 
空调维修 
物资回收 
防腐设备 
风机 
铠装热电偶 
精密铸造 
美术培训 
美术高考 
美术高考培训 
画室 
北京画室 
谐波治理 
无功补偿 
防腐管道 
英美制丝锥 
继电保护测试仪 
日语学校 
日语培训 
安装卫星电视 
安装卫星天线 
北京安装卫星电视 
北京安装卫星天线 
针孔摄像机 
望远镜 
夜视仪 
探测狗 
窃听器 
无线耳机 
屏蔽器 
金属探测器 
隔墙监听器 
国标舞 
拉丁舞 
喷码机 
针孔摄像机 
烤瓷牙 
除沫器 
土壤水分速测仪 
土壤水分测定仪 
土壤水分测量仪 
土壤墒情记录仪 
农药残留速测仪 
土壤化肥速测仪 
土壤养分测试仪 
信号隔离器 
信号分配器 
隔离器 
温度变送器 
电流变送器 
配电器 
隔离配电器 
隔离模块 
糖尿病足 
煤气发生炉 
高低温试验箱 
振动试验台 
恒温恒湿试验箱 
恒温恒湿箱 
恒温箱 
振动台 
盐雾箱 
老化台 
盐雾试验箱 
高低温箱 
低温试验箱 
振动试验机 
合同纠纷 
房产纠纷 
劳动纠纷 
房地产律师 
制氮机 
在职研究生 
液体壁纸 
清水模板 
冷弯型钢 
roll forming 
开口闪点仪 
凝固点仪 
闭口闪点仪 
运动粘度仪 
粘度仪 
抗乳化测定仪 
丝网除沫器 
气液过滤网 
除雾器 
丝网除雾器 
波纹填料 
三菱电机空调 
牛仔服 
牛仔服装厂 
牛仔休闲 
牛仔裤 
牛仔品牌 
牛仔专卖店 
虹吸 
虹吸雨水 
虹吸排水 
有压流 
同层排水 
walk throught metal detector 
恒温器 
马达保护器 
热保护器 
温度开关 
温控器 
过流保护器 
藏獒 
Google左侧优化 
舞台设计 
铅丝笼 
石笼网 
烧烤网 
振动筛网 
拖链 
光纤熔接机 
光缆监测系统 
光时域反射仪 
OTDR 
nike shoes 
air jordan 
不锈钢反应斧
hello
作者 访客 于 2008-08-26 23:45:03
窃听器手机窃听器监听器手机监听器窃听器手机窃听器监听器手机监听器窃听器手机窃听器监听器手机监听器窃听器手机窃听器监听器手机监听器窃听器手机窃听器监听器手机监听器

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



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