首页 / 脚本样式 / Ajax / 探讨一种AJAX性能的改进方法
探讨一种AJAX性能的改进方法2008-05-08 天极 朱先忠一、 引言在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