理解Ajax性能
权衡
过早的优化是万恶之源--Donald Knuth
时间,质量,成本,三选二。(Project Triangle)
增量式开发(incremental development)
迭代式开发,瀑布式开发
大爆炸集成方式(big bang integration)
wiki(Interative and incremental development)
优化原则
优化的目的是希望降低程序的整体开销。
分析应用程序和分析算法密切相关。
在执行时间上有3条错误轴线,避免与错误轴线相交的方法:减少每次迭代的开销,减少迭代的次数,重新设计应用程序。
循环嵌套越多,可优化的选择越少。
必须正确地设计程序。程序不符合要求,运行速度很快也没有意义。
测试Web应用时尽可能模仿真实的用户环境,低端机器和低速网络来测试。
Ajax
重构代码能明显降低复杂性。
依据YSlow规则重构代码 http://developer.yahoo.com/yslow/
Ajax实现方式:发送数据包到服务端(通常是JSON文本),服务端返回另一个数据包(JSON编码)来响应,最后JavaScript用这些数据来更新浏览器的显示。
想通过Ajax方法对性能有积极影响,采取正确地分工至关重要。
数据包应该尽可能小。
常见的错误是把所有应用数据都发给浏览器,这会再次引入Ajax本应避免的延迟问题。这类错误也会增加浏览器需要处理的数据量,从而更加降低性能。
浏览器
使用Ajax库(如:http://developer.yahoo.com/yui/ )
运行程序最大开销往往是DOM而非JavaScript。
Wow!
程序设计者趋向于在Ajax中添加酷炫特效。
使用不当时,这些酷炫特效会由于分散用户注意力或强迫用户等待动画播放完毕从而降低他们的生产效率。
误用特效也会导致不必要的DOM操作,从而带来巨大开销。
酷炫特效只在确实能改善用户体验时才能使用。
设计浏览器能胜任的事情。
JavaScript
通常情况下瓶颈不是JavaScript而是DOM。
感觉必须要重构脚本时,首先要评估。我们对于程序的真正开销的直觉往往是错的。只有通过评估,才有把握对性能产生的积极影响。
总结
一切都是权衡。不要浪费时间在那些消耗不大的代码上。
浏览器通常在运行JavaScript上花费的时间很少,绝大部分时间消耗在DOM上。
为质量编程。简洁、易懂且条理分明的代码更易于正确理解、维护和优化。
善加利用Ajax技术能使应用程序运行得更快,用好它关键是在浏览器和服务器之间建立平衡。
转载于:https://my.oschina.net/u/2893/blog/537802