ajax(一)

来源:互联网 发布:linux iso镜像下载64 编辑:程序博客网 时间:2024/06/07 09:07

本文简单说下个人对Ajax(全称:Asynchronous JavaScript XML)的理解以及一些小细节

一. ajax相对传统web交互模式的优势

        1.异步请求时, 用户同时可进行页面上的其它操作; (用户体验更好)

        2.Ajax请求一般用于操作页面的部分内容, 所以其与服务器通信产生的信息量远少于全页面; (传输量少有利于提高访问效率)


二. 使用ajax的注意点

        1.由于ajax异步特性,所以更要考虑浏览器缓存所带来的数据不同步问题(可以通过添加头部Cache-Control、Expiress、改变src等控制)

               在这里顺便说一下Cache-Control:no-cache 与 Cache-Control:nostore的区别: 前者只要求浏览器确保当前的资源是最新的, 如果缓存中的就是最新的,  那么

               仍然将使用缓存中的版本; 而nostore强制浏览器不使用本地资源, 每次都去服务器拿新的;

        2.客户端在同一时刻与同一域名进行多个ajax请求是不可取的,请求发送过于频繁,服务器将会陷入来自多个用户的大量请求处理中,从而导致客户端页面反应十分迟钝; 

              比如说:在某页面一加载时, 同时发送3个ajax去后台请求数据,这时不建议用ajax, 而建议在后台获取数据后再跳转到该页面;

              (减少请求次数 ==> 减少网络负担 ==> 提高访问效率也减少了服务器负担) 在HTTP1.1规范中规定一个客户端在同时刻与同一域名不能有两个以上的连接;

        3.ajax请求异常的处理方式

              3.1 假设客户端有一个定时任务在访问时,服务器内部出现了错误,此时在返回错误信息后,应该清除定时器;  因为该错误客户端无法处理,在管理员修复代码前,该请求都会出错,

              3.2 假设在请求过程中网络中断, 此时应该重试连接,至于次数可自行控制;

              3.3 服务器处理异常时要区分ajax请求和普通请求(因为在实际项目中, 都会定义全局的异常处理方式, 当服务器内部出错时跳至500页面; 

                    但这时若是ajax请求,它不会跳至500页面,而是会返回500页面的全内容给调用页面,这数据毫无意义)


三. ajax模式

              1. 预先获取: 预测用户下一步需要的信息,提前获取;  应用场景百度文库,比如说有一篇长20页的文章,当用户在浏览第一页的时候,我们可以预测到用户可能会浏览第二页,第三页等等,这时我们就可以在用户浏览第一页的时候,把剩下的页面预先加载好,这样用户看下面的页面时不会有延迟的感觉;

              2. 提交节流: 将要发送到服务器的数据先存入到客户端的缓存中,然后在预定的时间一次性发送数据; 应用场景Google Suggest,它并没有在输入每个字符时发送请求,而是在等待一个特定的时间后再将文本框中的所有字符一次性发送到服务器, 但它对从输入到发送的处理过程进行了精细的调整, 使用户完全感觉不到延迟。 (百度可能也采用这种方式, 百度和Google我都试过根本感觉不到延迟, 感觉就是一个字符一个请求, 时间估计控制在50毫秒内,可能是防止恶意攻击吧)

           

四. 个人使用ajax的经验:

        1. 尽量减少C、S之间的通信流量,不发送和不接收不需要的信息,减少通信量;

        2. 页面不同时进行2以上个ajax请求;

        3. ajax请求出现异常,后台处理异常时区分ajax请求与其它请求方式(区分方式可在客户端的请求头部中加入字段来判断)

        4.使用异步方式来实现常规数据的获取、使用同步方式与服务器进行简单的发送和接收; (大多数情况下都用异步,但比如说"登录"的时候我就会用同步,用户在 登录的过程不应该再操作页面上的其它功能比如注册、忘记密码等)

0 0
原创粉丝点击