分享
 
 
 

探讨一种AJAX性能的改进方法

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

一、 引言

在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()的次数。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有