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

ajax|性能

  一、 引言

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

时间: 2024-08-02 00:59:21

探讨一种AJAX性能的改进方法的相关文章

ASP.NET几种进行性能优化的方法及注意问题

asp.net|问题|性能|优化 网站的性能对于ASP.NET程序开发人员来说非常重要.一个优秀的网站虽然有美观的页面设计,完善的服务功能,但是打开网页时有长时间的延迟,用户最终将会无法忍受.尤其对于大型的电子商务网站而言,每秒钟有数万用户同时访问,没有良好的网站性能,根本无法满足庞大的需求. ASP.NET作为全新一代的动态网页生成系统,它在平台性能方面与原有的ASP相比已有了一个本质的提高.但要在此基础上开发出专业水准的.符合生产标准的.受用户欢迎的web应用程序,还需要开发人员从编程的角度

ajax中文乱码解决方法总结

ajax乱码解决办法一: 在服务器指定发送数据的格式: 在jsp文件中: response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件 或是 response.setContentType("text/xml;charset=UTF-8");//返回的xml文件 PHP:header("Content-Type:text/html;charset=GB2312"); ajax乱码

Ajax学习笔记---3种Ajax的实现方法【推荐】_AJAX相关

Ajax:  Asynchronous JavaScript and Xml , 异步js脚本和xml , 常用来实现页面局部的异步刷新, 对提高用户体验有很大帮助. Xml在多语言时较有优势, 但Ajax技术实际上较多采用Json对象而不是Xml来处理数据. (一) Ajax历史....了解性知识 Ajax归属于Web前端开发技术, 与javascript有着异常紧密的联系. Ajax就是一种实现异步通信无刷新的技术, 而这种技术可以有很多种实现方式. 浏览器的鼻祖网景(NetScape)公司

Ajax学习笔记---3种Ajax的实现方法【推荐】

Ajax:  Asynchronous JavaScript and Xml , 异步js脚本和xml , 常用来实现页面局部的异步刷新, 对提高用户体验有很大帮助. Xml在多语言时较有优势, 但Ajax技术实际上较多采用Json对象而不是Xml来处理数据. (一) Ajax历史....了解性知识 Ajax归属于Web前端开发技术, 与javascript有着异常紧密的联系. Ajax就是一种实现异步通信无刷新的技术, 而这种技术可以有很多种实现方式. 浏览器的鼻祖网景(NetScape)公司

Spring MVC前端与后端5种ajax交互方法【总结】

前端ajax与后端Spring MVC控制器有以下五种数据交互方式.(前台使用了dhtmlxGrid,后端使用了fastjson) 方式一 通过URL传参 通过URL挂接参数,如/auth/getUser?userid='6' 服务器端方法可编写为:getUser(String userid),也可新增其他参数如HttpSession, HttpServletRequest,HttpServletResponse,Mode,ModelAndView等. 方式二 单值传参 前台调用如: ajaxP

探讨目前两种主流网站流量引入方法

网站流量是一个网站生存的基础,没有流量,网站肯定活不下去,现在网站流量的主要来源可以简单分为两种: 第一种:以各种平台软文来引入流量.这些平台有:百度知道,百度贴吧,各平台博客,微博,大型论坛等.这类引入网站流量的方法,如果做的好,一天引入上万IP不成问题,一般具体操作方法都是搜索当前最热门的事件或电影.电视剧.比如前阵子热播的电视剧<轩辕剑>,每天的搜索量在数十万计(见下图),很多站长就把握住了这个时机,在这部剧开播前,就做好了对这个词的优化,从而把握住了先机.当轩辕剑在播完第一集的时候,你

探讨:利用AJAX技术提高搜索引擎排名

描述 嵌入在你的web页面中的导航元素能够降低你的搜索引擎评价排名并且降低你的网站的响应性能.本文作者想同你一起探讨如何使用AJAX技术来解决这两个问题. 许多设计良好的web站点都包含大量的与实际内容相联系的可导航信息.用于导航的HTML标记能影响你的搜索引擎评价,而且能够改进访问者的页面下载体验感.在本文中,你会看到如何使用AJAX来创建更为集中的更快速加载的web页面. 一. 分离导航与内容 让我们使用一个例子作为开始.请考虑你现在阅读的文章,它有下列一些内容: · 一个其上有一些预定义的

详解Oracle的性能调优方法

本文将介绍几种Oracle调优的方法,包括调整内存分配.调整Library Cache.调整数据字典高速缓存等多种方法. Oracle是一个高性能数据库软件.用户可以通过参数的调整,达到性能的优化.性能优化主要分为两部分: 一是数据库管理员通过对系统参数的调整达到优化的目的: 二是开发人员通过对应用程序的优化达到调整的目的. 在此,仅就系统参数的调整进行探讨,而不涉及应用程序的优化.对系统参数的调整,可以分为以下几个部分: 1.调整内存分配 系统全局区(SGA)是一个分配给Oracle 包含Or

在容器中使用Java RAM:五种不丢失内存的方法

本文讲的是在容器中使用Java RAM:五种不丢失内存的方法[编者的话]在这篇文章中,我们想分享一些看起来不那么明显的关于在容器内部中Java内存管理和弹性扩展的细节. 您将看到在即将发布的JDK版本中需要注意的问题和重要更新的列表,以及核心难点的现有解决方法. 我们收集了可以提高Java应用程序的资源使用效率的五个最有趣和最有用的问题点. [3 天烧脑式 Docker 训练营 | 上海站]随着Docker技术被越来越多的人所认可,其应用的范围也越来越广泛.本次培训我们理论结合实践,从Docke