Ajax——优缺点、交互模型、跨域问题以及对同步异步的区分
来源:互联网 发布:今日头条数据缓存策略 编辑:程序博客网 时间:2024/06/14 06:49
一、Ajax优缺点
优点:
1、最大的一点是页面无刷新,用户的体验非常好。
2、使用异步方式与服务器通信,具有更加迅速的响应能力。
3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。
缺点
1、ajax不支持浏览器back按钮。
用AJAX做交互的时候,是通过js+xmlhttp来获取其他页面信息,对于浏览用户来说,是一个隐性的UE,感觉不到浏览器地址栏的URL的变化,对浏览器来说,地址栏的URL没发变化,产生不了HISTORY。
不是说在用AJAX做交互的时候,BACK按钮的问题就解决不了,对于AJAX应用很成熟的网站比如google等,这些都已经解决。
用过Gmail的知道,Gmail下面采用的ajax技术解决了这个问题,在Gmail下面是可以后退的,但是,它也并不能改变ajax的机制,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)
但是,虽然说这个问题是可以解决的,但是它所带来的开发成本是非常高的,和ajax框架所要求的快速开发是相背离的。这是ajax所带来的一个非常严重的问题。
2、安全问题 AJAX暴露了与服务器交互的细节。
ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于credentials的安全漏洞等。
3、对搜索引擎的支持比较弱。
4、破坏了程序的异常机制。
像ajax.dll,ajaxpro.dll这些ajax框架是会破坏程序的异常机制的。
5、不容易调试。
比如说违背了url和资源定位的初衷。例如,我给你一个url地址,如果采用了ajax技术,也许你在该url地址下面看到的和我在这个url地址下看到的内容是不同的。这个和资源定位的初衷是相背离的。
6、一些手持设备(如手机、PDA等)现在还不能很好的支持ajax。
比如说我们在手机的浏览器上打开采用ajax技术的网站时,它目前是不支持的。
二、Ajax的交互模型
- 用户发出异步请求;
- 创建 XMLHttpRequest 对象;
- 告诉 XMLHttpRequest 对象哪个函数会处理XMLHttpRequest 对象状态的改变,为此要把对象的onReadyStateChange 属性设置为响应该事件的 JavaScript 函数的引用;
- 创建请求,用 open 方法指定是 get 还是 post ,是否异步, url 地址;
- 发送请求, send 方法
- 接收结果并分析
- 实现刷新
三、Ajax的跨域问题
实现合理的跨域请求对开发某些浏览器应用程序至关重要。
主要有以下几种方法:
- CORS,跨域资源共享,定义了必须在访问跨域资源时,浏览览器与服务器该如何沟通,基本思想是,使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是否成功。注意,请求和响应都不包含cookie信息。IE8通过XDomainRequest对象支持CORS,其它浏览器通过XHR对象原生支持CORS。
- 图像Ping,多用于动态创建图像。该方式与服务器进行简单、单向的跨域通信。
- JSONP,填充式JSON,应用JSON的一种新方法。
它是被包含在函数调用中的JSON,例如,
callback({“name”: “abc”});
- Comet,是一种服务器向页面推送数据的技术。两种方式可实现,长轮询和流。
- SSE,服务器发送事件。SSE API用于创建到服务器的单向连接,服务器通过这个连接可以发送任意数量的数据。
- Web Sockets API
四、同步与异步的区别
同步:脚本会停留并等待服务器发送回复然后再继续
异步:脚本允许页面继续其进程并处理可能的回复
![\](http://www.2cto.com/uploadfile/Collfiles/20150427/20150427090403187.png)
异步更新是后台和服务器进行少量数据交换,即不重新加载整个网页就可以对网页的某部分进行更新。而AJAX减少了用户的等待时间。展示给用户的还是同一个页面,用户感觉页面刷新,也看不到到Javascript后台进行的发送请求和接受响应。
http://www.2cto.com/kf/201504/395028.html
- Ajax——优缺点、交互模型、跨域问题以及对同步异步的区分
- ajax是什么? ajax的交互模型? 同步和异步的区别? 如何解决跨域问题?
- AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
- AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
- AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
- AJAX是什么?AJAX的交互模型(流程)?同步和异步的区别?AJAX跨域的解决办法?
- ajax 、ajax的交互模型、如何解决跨域问题——面试题
- ajax 、ajax的交互模型、如何解决跨域问题
- ajax 是什么?ajax 的交互模型?ajax的优缺点
- Ajax同步与异步优缺点
- 浅谈自己对异步交互、同步交互的理解
- 对Ajax同步异步的理解
- Ajax 原理过程 同步异步区别 优缺点
- Ajax同步与异步优缺点与使用
- ajax同步、异步问题
- ajax同步异步问题
- ajax同步异步问题
- 同步和异步的区分
- Linux tcpdump命令详解
- CF #651C. Watchmen(map容器)
- YUV420转RGB的代码(C++/JAVA)
- NC工具的使用说明教程
- 一个简单的js 倒计时问题
- Ajax——优缺点、交互模型、跨域问题以及对同步异步的区分
- 算法导论:第15章 动态规划_2矩阵链乘法
- Android断点续传
- HTML5安全:CORS(跨域资源共享)简介
- java基础第一天
- 找出最长无重复子串
- NSError 概述
- Oracle Using Flashback Drop and Managing the Recycle Bin
- SIP注册