枫林在线论坛>>技术交流 [普通模式] [上一主题] [下一主题]
[382557] 主题: Ajax铺设了更好的开发Web应用的道路(6)
作者: little 标题:  Ajax铺设了更好的开发Web应用的道路(6)[转载]
昵称: 渺小 来自: 192.168.*.* 详细
经验值: 14288 发贴时间: 2005年12月17日 11:17:27
等级: 博大精深 长度: 3110字
http://searchwebservices.techtarget.com.cn/tips/212/2179212_5.shtml 

Ajax铺设了更好的开发Web应用的道路

【2005-11-03 11:17】【】【赛迪网】

  使用Ajax的挑战

  与任何技术一样,使用Ajax在相当多的方面都可能范错误。我在这儿讨论的问题目

前都缺少解决方案,并将会随着Ajax的成熟而解决或提高。随着开发Ajax应用经验的不

断获取,开发者社区中将会出现最好的实践经验与指导方针。

  XMLHttpRequest的有效性

  Ajax开发者面对的一个最大问题是当XMLHttpRequest不可用时如何反应。虽然大部

分现代浏览器支持XMLHttpRequest,但还是有少量的用户,他们的浏览器不能支持,或

由于浏览器安全设置而阻止对XMLHttpRequest的使用。

  若你的Web应用发布于公司内部的Intranet上,你很可能可以指定支持哪种浏览器,

并可以确保XMLHttpRequest是可用的。若你在公共WEB上发布,则你必须意识到由于假定

XMLHttpRequest是可用的,所有就阻止了老浏览器、手持设备浏览器等等用户来使用你

的系统。

  然而,你应该尽力保证应用系统“正常降级”使用,在系统中保留适用于不支持XM
L
HttpRequest的浏览器的功能。在购物车例子中,最好的方法是有一个Add to Cart按钮

,可以进行常规的提交处理,并刷新页面来反映购物车状态的变化。

  Ajax行卫可以在页面被载入时通过JavaScript添加到页面中,只在XMLHttpRequest

可用的情况下,为每个Add to Cart按钮加上JavaScript处理函数。另一个方法是在用户

登录时检测XMLHttpRequest,再决定是提供Ajax版本还是常规基于form提交的版本。

  可用性考虑

  围绕着Ajax应用的大部分问题都是很普通的问题。例如,让用户知道他们的输入已

经被注册并处理,是很重要的,因为在XMLHttpRequest处理过程中并不能提供通常的漏

斗旋转光标。一种方法是将“确认”按扭上的文本替换为“正在更新中…”,以避免用

户在等待响应时多次点击按钮。

  另一个问题是,用户可能没有注意到他们正在观看的页面已经被更新。可以通过使

用各种视觉技巧来将用户的眼光吸引到页面的更新区域。还有一个问题是通过Ajax更新

页面打断了浏览器“退回前页”按钮的正常工作,地址栏中的URL不能反映页面的全部状

态,并且不能使用书签功能。参见Resource章节中列出的网站地址上的文章来了解更多
A
jax应用关于可用性方面的问题。

  服务器负载

  使用Ajax界面代替传统的基于form的界面可能戏剧性地增加传递到服务器的请求数

量。例如,一个普通的Google搜索给服务器造成一次命中,并在用户确认搜索表单时发

生。然而,Google Suggest,将会试图自动完成你的搜索词,在用户打字时将会往服务

器发送多个请求。

  在开发一个Ajax应用时,要注意到你将会发送多少请求到用户器端,以及服务器的

负载指标。你可以通过在客户端适当地缓存请求、与服务器响应来缓减负载压力。你也

应该在设计Ajax应用时尽量在客户端处理更多的逻辑,而不用与服务器端通讯。

  处理异步

  一定要记住,没有任何东西可以保证XMLHttpRequest将会按照它们被发送的顺序来

依次结束。实际上,你在设计系统时,脑子里应该始终假定它们不会按原来顺序结束。

在购物车例子中,使用了一个最后更新的时间戳来保证最新的数据不会被改写。

  这个非常基本的方法可以在购物车场景中工作,但可能不能在其它情况下工作。在

设计时刻就要考虑你该如何处理异步服务器响应。

  结论

  你现在应该对于Ajax的基本原则有了一个良好的了解,另外,你应该理解一些更高

级的随Ajax方法而来的设计问题。创建一个成功的Ajax应用需要一系列的方法—从Java
S
cript UI设计到服务器端架构—但是你现在应该已经具备了需要使用到的Ajax核心知识



========== * * * * * ==========
Top

| 用户注册 | 在线用户 | 投票中心 | 常见问题 |

Copyright © 2001-2012 枫林在线(www.FengLin.info) All Rights Reserved
页面运行使用38.7毫秒