Ajax技术就是所谓的Web2.0技术的重要组成部分,Ajax技术既是对传统Web技术的革命,也是对传统Web技术的一种改良和发展。引入Ajax技术后,不仅改进了Web应用的性能,也改善了用户的体验。下面就从几个方面谈谈传统Web应用与Ajax之间的不同。
用户体验方面:这是Ajax技术最大的改善之处,对于传统的Web应用,用户只能发送独占式请求,一旦请求发送出去,页面就处于等待状态,等待服务器响应完成,在服务器响应完成之前,客户端的浏览器只能是一片空白;而Ajax技术则完全不同,它允许采用异步的方法发送请求,请求的发送完全不会阻塞当前的浏览器线程,浏览器可以继续下一步操作,例如继续浏览,甚至再次发送异步请求。对于用户的体验而言,Ajax提供了一种重大的改善,它让用户不会处于等待状态,用户会感觉自己一直与应用处于交互状态。
响应速度:就响应速度而言,一般人会认为Ajax应用的速度比传统Web应用要快,实际上这种说法并不完全正确。正如前面见到的,基于Ajax的应用需要大量增加JavaScript代码,大量增加JavaScript代码后的Web页面在第一次加载时速度将比传统Web页还慢(因为必须下载大量的JavaScript代码)。一旦进入该页后,响应速度便会明显提高,因为无须频繁地在各页面之间跳转,从服务器获得的仅是必须改变的数据,因此减少了冗余数据的下载,从而大幅度提高响应速度。有的人说,Ajax包含的大量JavaScript代码会占用用户的大量带宽,这是相当错误的说法,Ajax应用让页面一次下载,但可以多次重复使用。表面上看,一次下载的JavaScript代码量虽然增大,但从长时间来看,传统Web应用需要多次下载Web页面,需要的带宽更大。
应用架构:传统Web应用主要由3层组成,而增加Ajax技术的Web应用将在传统的Web应用上额外增加一个Ajax引擎,其实质就是一层JavaScript代码。这些JavaScript代码可以在客户端保存用户状态而无须使用session,能将控制器的部分功能转移到客户端页面,但这必然会导致安全性等方面的问题,需要开发者认真对待。
开发的代码量:Ajax技术的大部分功能都依赖于JavaScript语言实现,大量的JavaScript代码严重降低了程序员的开发速度。JavaScript本身不是面向对象的编程语言,这严重限制了JavaScript代码的可重用性等。JavaScript代码并没有一个完善的调试工具,这无形中也加重了程序员的负担。也有人说Ajax技术是通过折磨程序员来取悦用户的技术。
服务器的负担:传统的看法是Ajax技术降低了服务器的负担,因为服务器只需要生成客户端必须更新的数据。这种说法在某些场合下也许正确,但实际的情形是:大量使用Ajax技术的Web应用将导致服务器的负担大大加重,而绝不是减轻。因为Ajax技术往往比传统Web应用需要发送更多的请求,例如对于一个自动完成的输入框,传统Web应用无须发送任何请求,等待用户输入即可;而Ajax技术的情形则是:用户每输入一个字符,应用都将向服务器发送一次请求。
Ajax技术是一种非常优秀的技术,但应该理性对待,绝不能在整个应用中盲目增加大量的Ajax交互。