提高AJAX客户端响应速度.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
提高AJAX客户端响应速度 第 PAGE 6页 共 NUMPAGES 6页 提高AJAX客户端响应速度 (文:包一磊) AJAX的出现极大的改变了Web应用客户端的操作模式,它使的用户可以在全心工作时不必频繁的忍受那令人厌恶的页面刷新。理论上AJAX技术在很大的程度上可以减少用户操作的等待时间,同时节约网络上的数据流量。而然,实际情况却并不总是这样。用户时常会抱怨用了AJAX的系统响应速度反而降低了。 笔者从事AJAX方面的研发多年,参与开发了目前国内较为成熟的AJAX平台-dorado。根据笔者的经验,导致这种结果的根本原因并不在AJAX。很多时候系统响应速度的降低都是由不够合理的界面设计和不够高效的编程习惯造成的。下面我们就来分析几个AJAX开发过程中需要时刻注意的环节。 合理的使用客户端编程和远程过程调用。 客户端的编程主要都是基于JavaScript的。而JavaScript是一种解释型的编程语言,它的运行效率相对于Java等都要稍逊一筹。同时JavaScript又是运行在浏览器这样一个严格受限的环境当中。因此开发人员对于哪些逻辑可以在客户端执行应该有一个清醒的认识。 在实际的应用中究竟应该怎样使用客户端编程,这依赖于开发人员的经验判断。这里很多问题是只可意会的。由于篇幅有限,在这里我们大致归纳出下面这几个注意事项: 尽可能避免频繁的使用远程过程调用,例如避免在循环体中使用远程过程调用。 如果可能的话尽可能使用AJAX方式的远程过程调用(异步方式的远程过程调用)。 避免将重量级的数据操作放置在客户端。例如:大批量的数据复制操作、需要通过大量的数据遍历完成的计算等。 改进对DOM对象的操作方式。 客户端的编程中,对DOM对象的操作往往是最容易占用CPU时间的。而对于DOM对象的操作,不同的编程方法之间的性能差异又往往是非常大的。 以下是三段运行结果完全相同的代码,它们的作用是在网页中创建一个10x1000的表格。然而它们的运行速度却有着天壤之别。 /* 测试代码1 - 耗时: 41秒*/var table = document.createElement(TABLE); document.body.appendChild(table); for(var i = 0; i 1000; i++){ var row = table.insertRow(-1); for(var j = 0; j 10; j++){ var cell = objRow.insertCell(-1); cell.innerText = ( + i + , + j + ); } } /* 测试代码2 - 耗时: 7.6秒 */var table = document.getElementById(TABLE); document.body.appendChild(table); var tbody = document.createElement(TBODY); table.appendChild(tbody); for(var i = 0; i 1000; i++){ var row = document.createElement(TR); tbody.appendChild(row); for(var j = 0; j 10; j++){ var cell = document.createElement(TD); row.appendChild(cell); cell.innerText = ( + i + , + j + ); } } /* 测试代码3 - 耗时: 1.26秒 */var tbody = document.createElement(TBODY); for(var i = 0; i 1000; i++){ var row = document.createElement(TR); for(var j = 0; j 10; j++){ var cell = document.createElement(TD); cell.innerText = ( + i + , + j + ); row.appendChild(cell); } tbody.appendChild(row); } var table = document.getElementById(TABLE); table.appendChild(tbody); document.body.appendChild(table);这里的“测试代码1”和“测试代码2”之间的差别在于在创建表格单元时使用

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档