All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
五个常见 PHP 数据库问题_[PHP教程]
ASP.NET,MasterPage,中图片路径的解决办法_[Asp.Net教程]
发布一个好用的类SafeConvert,,用于值类型装换_.net资料_编程技术
C#中如何读写INI文件_.net资料_编程技术
Linux环境下如何使用PHP处理图像_php资料_编程技术
PHP+MySQL动态网站开发基础实例教程_[PHP教程]
Asp.net的身份验证_[Asp.Net教程]
利用PHP的OOP特性实现数据保护_[PHP教程]
C#编写的生成缩略图程序_[Asp.Net教程]
菜鸟也学习ASP.NET如何读取数据库内容_.net资料_编程技术
Reading number is top 10 pictures
Summer is most suitable for young people to travel in China7
Absolutely shocked. National geographic 50 animal photographys5
Sora aoi on twitter2
避免防盗门的猫眼变成钥匙眼
A man's favorite things3--ZhouWeiTong
陪睡门马睿菈自曝写真 称首拍大尺度照片2
心有鱼而力不足
The Soviet union swimsuit exposure in the 70 year3
看如何给单纯的少女洗脑
这才是真正的人体艺术4
Download software ranking
艳兽都市
尖东毒玫瑰A
虚拟机汉化软件
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
Be there or be square
Adobe Flash Player(IE) 10.0.32.18 浏览器专用的FLASH插件
I'm come from Beijing2
双旗镇刀客A
Boxer vs Yellow5
在线棋牌游戏3.05版
delv published in(发表于) 2014/1/6 9:13:35 Edit(编辑)
探讨一种AJAX性能的改进方法_[Asp.Net教程]

探讨一种AJAX性能的改进方法_[Asp.Net教程]

探讨一种AJAX性能的改进方法_[Asp.Net教程]

一、 引言

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


作者:朱先忠编译 来源:天极开发





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.