又一个新的项目已经接近尾声,我就好比是经历了又一轮的 JavascriptPHP 方面 的考试。由于其中 Ajax 方面的应用比较的多,纵观这个项目的从始至终,本人对于 Ajax 也有了一个全新的认识。

在经历了 没日没夜 的开发所带来的「审美疲劳」,牢骚在所难免。首先,说说 Ajax 存在的一些问题。

从原始目的上说,开发者使用 Ajax 是为了用户友好。但真的是如此吗?这让 Ajax 不得不面对客户端与服务器端的延迟问题。虽然有很多「欺骗」用户的办法,比如加一个会动的 gif 图片让用户等待。但这真的能让已经没有耐心的用户再多花一段时间去等待他们期望的结果?

其次,由于目前技术的限制,Ajax 是无法保留目前用户目前的之行状态的。一旦用户刷新浏览器,那么所有的东西将全部重新来过。这点我认为是 Ajax 的软肋(即使可以通过 Session 和 Cookie 来解决)。

Ajax 对 SEO 方面是不友好的。目前,或许我可以下一个结论,搜索引擎是不会抓取 Javascript 的输出的。不过即便如此,我们也可以利用这个特点 做一些有意思的功能

有人说 Ajax 能减轻服务器负担,而我认为这个观点不全面的。异步调用服务器数据的确数据包会很少,但是还是进行了一次服务器请求。所以相对于一般的项目,在同样负载的情况下,用 Ajax 应用比较多的项目明显会比传统项目请求服务器的次数要多。这可能会造成一种趋势,就是 缓存(Cache)技术 的流行。

Ajax 是依赖客户端的具体实现的。因为 Ajax 的核心应用 - Javascript,每个浏览器的厂商都是有自己不同的实现。所以不要指望在 Internet Explorer 中可以正确执行的 Javascript 能够完全不经过修改就放到 Safari 中使用。但有一个好的趋势就是开发者会更加注重 Web 标准化

上述就是本人对于 Ajax 的牢骚。但 Ajax 的出现是必然的,这是因为用户始终需要更好的浏览体验。早在 Ajax 出现以前,就有 Flash 实现过类似的功能。只是通过 Javascript 让更多的开发者意识到,原来使用原有的技术也可以这样做。

到底该不该使用 Ajax,在什么情况下使用它,却成了众说纷纭的问题。总而言之,本人认为在不影响用户体验的前提下,在适合的场合使用 Ajax。听起来有点迷茫,但是如果你用过 Gmail,你会发现它会在用户选择上传文件以后继续编辑邮件的同时使用 Ajax 上传文件,错开用户发送附件时的等待,那么你就会全部明白了。

好比从前的 Javascript、Flash 欢迎页面一样,目前比较堪忧的是 Ajax 有被滥用的倾向。确切的说,开发者有时候使用 Ajax 是出于跟风 -- 因为它很流行,却完全没有考虑到用户会不会使用它。

巧合的是,Google 以后发现有很多的开发者也写过类似的文章。引用 dgwxx 文章 中的一段话结束本篇 Blog:

(Ajax)只在必要的时候使用。《Foundations of Ajax》里有一句话「不要去做简历驱
动的设计」。就是说,不要弄一个很花哨的东西来吹嘘自己是多么了不起,而要重视客户
体验与运行成本。

......

比如,Google Suggest 那样的输入提示不是每个网站都能做到的,只有像 Google 这种
拥有天文数目的服务器资源,才能为用户提供如此高频率和准确的输入提示。准确估计自
己的实力,才能用好 Ajax。

最后,推荐阅读: Six Myths About Ajax (中文版: Ajax 的六个误区 )、 Ajax 的七宗罪 以及 Ajax: 99% Bad ,批判的接受 Ajax。