您的位置:首页 > 其它

使用Ajax技术可能面临的一些问题

2007-06-23 23:45 381 查看
Ajax确实能给客户甚至开发者带来很棒的体验,但在某些情况下,Ajax所表现出来的特性很可能成为了它的弱点、甚至缺陷。

那么,谈谈使用Ajax技术可能面临的一些问题:

XMLHttpRequest 的可用性

Ajax 开发人员面临的一个最大问题是:在没有XMLHttpRequest 可用时该如何响应?虽然主要的现代浏览器都支持XMLHttpRequest,但仍然有少数用户的浏览器不支持,或者浏览器的安全设置阻止使用XMLHttpRequest。如果开发的 Web 应用程序要部署在企业内部网,那么可能拥有指定支持哪种浏览器的权力,从而可以认为XMLHttpRequest 总能使用。但是,如果要部署在公共 Web 上,那么就必须当心,如果假设 XMLHttpRequest 可用,那么就可能会阻止那些使用旧的浏览器、残疾人专用浏览器和手持设备上的轻量级浏览器的用户使用您的应用程序。

所以,您应当努力让应用程序“平稳降级”,在没有XMLHttpRequest 支持的浏览器中也能够工作。在类似购物车的示例中,把应用程序降级的最好方式可能是让Add to Cart 按钮执行一个常规的表单提交,刷新页面来反映购物车更新后的状态。Ajax 的行为应当在页面装入的时候就通过JavaScript 添加到页面,只有在XMLHttpRequest 可用时才把JavaScript 事件处理函数附加到每个Add to Cart 按钮。另一种方式是在用户登录时检测XMLHttpRequest 是否可用,然后相应地提供应用程序的Ajax 版本或基于表单的普通版本。

可用性考虑

关于Ajax 应用程序的某些可用性问题比较普遍。例如,让用户知道他们的输入已经注册了可能是重要的,因为沙漏光标和spinning 浏览器的常用反馈机制“throbber”对XMLHttpRequest 不适用。一种技术是用“Now updating...”类型的信息替换Submit 按钮,这样用户在等候响应期间就不会反复单击按钮了。

另一个问题是,用户可能没有注意到他们正在查看的页面的某一部分已经更新了。可以使用不同的可视技术,把用户的眼球带到页面的更新区域,从而缓解这个问题。由Ajax 更新页面造成的其他问题还包括:“破坏了”浏览器的后退按钮,地址栏中的URL 也无法反映页面的整个状态,妨碍了设置书签。

服务器负载

用Ajax 实现代替普通的基于表单的UI,会大大提高对服务器发出的请求数量。例如,一个普通的Google Web 搜索对服务器只有一个请求,是在用户提交搜索表单时出现的。而Google Suggest 试图自动完成搜索术语,它要在用户输入时向服务器发送多个请求。在开发Ajax 应用程序时,要注意将要发送给服务器的请求数量以及由此造成的服务器负荷。降低服务器负载的办法是,在客户机上对请求进行缓冲并且缓存服务器响应(如果可能的话)。还应该尝试将Ajax Web 应用程序设计为在客户机上执行尽可能多的逻辑,而不必联络服务器。

处理异步

非常重要的是,要理解无法保证XMLHttpRequest 会按照分派它们的顺序完成。实际上,应当假设它们不会按顺序完成,并且在设计应用程序时把这一点记在心上。在类似购物车的示例中,使用最后更新的时间戳来确保新的购物车数据不会被旧的数据覆盖。这个非常基本的方式可以用于购物车场景,但是可能不适合其他场景。所以在设计时请考虑如何处理异步的服务器响应。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐