ajax降低性能,AJAX的性能改进

AJAX的性能改进

简介

在Web窗体中,我们使用AJAX来从客户端(从JavaScript)调用服务器端方法。 AJAX的内部使用XMLHttpRequest。我已经测试了不同的方式实现Ajax功能。另外,我有监测AJAX调用的性能和生命周期。我发现一些严重的问题,而在Web窗体中使用AJAX。而且,我发现一个问题的解决方案。在这篇文章中,我要共享的问题和解决方案。使用AJAX的性能问题

对于每一个AJAX调用,我们创建包含AJAX方法的类的一个实例。此外,它会创建字段,属性,和其他类级变量的实例,如果我们使用新的关键字,在一流水平。概念验证

我已经创建了一个项目,该项目包含两个Web窗体下,WebForm1.aspx,WebForm2.aspx,以及一类,Student.vb。这两个代码隐藏页有一个getData()AJAX函数和一个Student类型的公共变量。使用MXLOGGER类,我记录了执行流程的每个阶段。

注意:Webform2.aspxs的GetData()AJAX函数是共享的。在WebForm1,这是不共享"。Student.vb公共类学生 新建()

0; MXLogger.AddLog("从Student.Constructorquot;) END SUB 作为字符串昏暗的_name 公共属性的名称()作为字符串

60; 获取 返回_name 最终获取 设置(BYVAL值作为字符串) _name =价值 结束设定 高端物业末级"WebForm1.aspx.vb中公共类WebForm1的

0; 公开学生的新学生 新建()

160; MXLogger.AddLog("从WebForm1.Constructorquot;) &

#160; END SUB LT; Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read GT); _ 公共功能的getData()作为字符串 MXLogger.AddLog("从WebForm1.Ajax.getData()quot;) 返回quot;我米非共享Functionquo​​t; 端功能末级"WebForm2.aspx.vb公共类WebForm2 公开学生的新学生 新建() MXLogger.AddLog("从WebForm2.Constructorquot;) END SUB

0; LT; Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read GT); _ 公共共享功能的getData()作为字符串

60; MXLogger.AddLog("从WebForm2.Ajax.getData()quot;) 返回quot;我米共享Functionquo​​t; 端功能末级测试应用程序测试案例1:

运行WebForm1.aspx,并调用的getData()AJAX函数三次从JavaScript。测试案例2:

的运行webform2.aspx和调用的getData()AJAX函数三次从JavaScript。

对于上述测试的情况下,我得到了如下的日志:/ /请注意:这些行日志/ /我手动添加解释的目的。 日志测试案例1:(非Ajax的共享功能)-------虽然载入页顶--------2006年5月9日10点37分29秒AMgt; GT; Student.Constructor2006年5月9日10点37分29秒AMgt; GT; WebForm1.Constructor2006年5月9日10点37分29秒AMgt; GT; WebForm1.Ajax.getData()-------有关的GetData首先呼叫()--------2006年5月9日10点37分29秒AMgt; GT; Student.Constructor2006年5月9日10点37分29秒AMgt; GT; WebForm1.Constructor2006年5月9日10点37分29秒AMgt; GT; WebForm1.Ajax.getData()-------有关的GetData第二呼叫()--------2006年5月9日10点37分29秒AMgt; GT; Student.Constructor2006年5月9日10点37分29秒AMgt; GT; WebForm1.Constructor2006年5月9日10点37分29秒AMgt; GT; WebForm1.Ajax.getData()-------有关的GetData第三次呼叫()--------2006年5月9日10时37分30秒AMgt; GT; Student.Constructor2006年5月9日10时37分30秒AMgt; GT; WebForm1.Constructor2006年5月9日10时37分30秒AMgt; GT; WebForm1.Ajax.getData()日志测试案例2:(共享Ajax功能)-------虽然载入页顶--------2006年5月9日10时37分09秒AMgt; GT; Student.Constructor2006年5月9日10时37分09秒AMgt; GT; WebForm2.Constructor2006年5月9日10时37分09秒AMgt; GT; WebForm2.Ajax.getData()-------有关的GetData首先呼叫()--------2006年5月9日10点38分11秒AMgt; GT; WebForm2.Ajax.getData()-------有关的GetData第二呼叫()--------2006年5月9日10点38分11秒AMgt; GT; WebForm2.Ajax.getData()-------有关的GetData第三次呼叫()--------2006年5月9日10点38分11秒AMgt; GT; WebForm2.Ajax.getData()

在上面的日志,我们可以看到,测试案例1中,我们可以看到更多的日志WebForm1的和学生的建设者。结论

我的建议是,在所有可能的地方,我们应该使用适合于Ajax的共享方法,所以它不会创建Web窗体以及一流水平领域的多个实例。因此,我们可以减少敲定的数量()从GC调用。

回答

×评论会员:g 时间:2�

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值