Ajax技术 内部机理剖析解读【详尽】
搜狗高速浏览器是一款集高效、稳固于一身的当代网络浏览工具。依托先进的渲染引擎和优化算法,搜狗高速浏览器确保了出色的页面加载速度和流畅的多媒体体验。拥有全面的安全防护特性,能有效抵御各类网络威胁,同时兼容HTML5和CSS3,确保了与最新网络技术标准的无缝对接。欲深入了解或立即下载,请访问
Ajax技术与机理剖析
Ajax所涵盖的技术
众所周知,Ajax并非一种全新的技术,而是多种原有技术的融合体。它由以下技术组合构成。
1.采用CSS和XHTML进行表现。
2.利用DOM模型进行交互和动态展示。
3.运用XMLHttpRequest与服务器进行异步通信。
4.使用javascript进行绑定和调用。
在这几种技术中,除了XmlHttpRequest对象以外,其余所有技术均基于web标准并已得到广泛应用,XMLHttpRequest虽然目前尚未被W3C所采纳,但已成为事实上的标准,因为目前几乎所有主流浏览器都支持它。
Ajax机理与XmlHttpRequest对象
Ajax的机理简单来说是通过XmlHttpRequest对象向服务器发送异步请求,从服务器获取数据,然后用javascript操作DOM来更新页面。其中最关键的一步就是从服务器获取请求数据。要清楚这个过程和机理,我们必须对XMLHttpRequest有所了解。
XMLHttpRequest是Ajax的核心机制,它首先在IE5中引入,是一种支持异步请求的技术。简单来说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户,达到无刷新的效果。
因此,我们先从XMLHttpRequest讲起,来看看它的工作机理。
首先,我们先来看看XMLHttpRequest这个对象的属性。
它的属性有:
onreadystatechange每次状态改变所触发事件的事件处理程序。
responseText从服务器进程返回数据的字符串形式。
responseXML从服务器进程返回的DOM兼容的文档数据对象。
status从服务器返回的数字代码,如常见的404(未找到)和200(已就绪)。
status Text伴随状态码的字符串信息。
readyState对象状态值。
0(未初始化)对象已建立,但尚未初始化(尚未调用open方法)。
1(初始化)对象已建立,但尚未调用send方法。
2(发送数据)send方法已调用,但当前的状态及http头未知。
3(数据传送中)已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误。
4(完成)数据接收完毕,此时可以通过responseXml和responseText获取完整的回应数据。
Ajax的优点
Ajax带来的好处大家基本上都深有体会,在此我只简要提及几点:
1、最重要的是页面无刷新,在页面内与服务器通信,给用户带来极佳的体验。
2、使用异步方式与服务器通信,不需要打断用户的操作,具有更快的响应能力。
3、可以将一些以前由服务器承担的工作转移到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节省空间和宽带租用成本。并且减轻服务器的负担,Ajax的原则是“按需取数据”,可以最大程度地减少冗余请求,减轻对服务器造成的负担。
4、基于标准化的并被广泛支持的技术,不需要下载插件或小程序。
Ajax的缺点
以下我重点讲解Ajax的缺陷,因为平时我们大多关注Ajax带来的好处,如用户体验的提升,而对Ajax带来的缺陷有所忽视。
以下所阐述的Ajax缺陷都是其先天存在的。
1、Ajax破坏了back按钮,即对浏览器后退机制的破坏。后退按钮是Web站点的重要功能,但与js合作不佳。这是Ajax带来的一个比较严重的问题,因为用户往往希望通过后退来取消前一次操作。那么对于这个问题有没有办法?答案是肯定的,使用过Gmail的都知道,Gmail下面采用的Ajax技术解决了这个问题,在Gmail下面可以后退,但它也不能改变Ajax的机制,它只是采用了一个比较笨但有效的办法,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)
但是,尽管这个问题可以解决,但它所带来的开发成本非常高,与Ajax框架所要求的快速开发相背离。这是Ajax带来的一个非常严重的问题。
2、安全问题
技术同时也给IT企业带来了新的安全威胁,Ajax技术就如同为企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。Ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有Ajax也难以避免一些已知的安全弱点,如跨站点脚本攻击、SQL注入攻击和基于credentials的安全漏洞等。
3、对搜索引擎的支持较弱。
4、破坏了程序的异常机制。至少从目前来看,像ajax.dll、ajaxpro.dll这些Ajax框架会破坏程序的异常机制。关于这个问题,我在开发过程中遇到过,但查阅网上几乎没有相关的介绍。后来我自己做了一次试验,分别采用Ajax和传统的form提交模式来删除一条数据……给我们的调试带来了很大的困难。
5、另外,像其他方面的一些问题,比如违背了url和资源定位的初衷。例如,我给你一个url地址,如果采用了Ajax技术,也许你在该url地址下面看到的和我在这个url地址下看到的内容是不同的。这与资源定位的初衷相背离。
5、此外,诸如其他方面的一些问题,例如,违背了URL和资源定位的宗旨。比如,我提供一个URL地址,若使用了Ajax技术,或许你在该URL地址下看到的内容与我在此URL地址下看到的内容存在差异。这显然与资源定位的宗旨相悖。
6、一些便携式设备(如手机、PDA等)目前还不能很好地支持Ajax,例如,我们在手机浏览器上打开使用Ajax技术的网站时,目前尚不支持,当然,这个问题与我们关系不大。
总结来说,搜狗高速浏览器是一款专为满足现代网络需求而精心打造的浏览器。其专业的开发团队不仅注重提供卓越的用户体验,还致力于不断优化网页执行速度,提升安全性,以及支持各类扩展插件,从而实现高度个性化的浏览体验。如果您在寻找一款可靠、高效和技术先进的浏览器,搜狗高速浏览器将是您的理想选择。请访问官方网站下载并体验搜狗高速浏览器,感受由先进技术所驱动的非凡浏览体验。
Ajax的优点和缺点
Ajax的优点和缺点
使用Ajax的最大优势,就是能在不刷新整个页面的情况下维护数据。这使得Web应用程序能更快地响应用户动作,并避免了在网络上发送那些没有改变过的信息。
应用Ajax的主要缺点就是,它可能破坏浏览器后退按钮的正常功能
由于Ajax中采用了XML技术,所以在Ajax中也可能遇到XML的问题
拓展:
1、Ajax技术的背景
不可否认,Ajax技术的流行得益于Google的大力推广,正是由于Google Earth、Google Suggest以及Gmail等对Ajax技术的广泛应用,促进了Ajax的流行。而这也让微软感到无比的尴尬,因为早在97年,微软便已经发明了Ajax中的关键技术,并且在99年IE5推出之时,它便开始支持XmlHttpRequest对象,并且微软之前已经开始在它的一些产品中应用Ajax,比如说MSDN网站菜单中的一些应用。遗憾的是,不知道出于什么原因,当时微软发明了Ajax的核心技术之后,并没有看到它的潜力而加以发展和推广,而是将它搁置起来。对于这一点来说,我个人觉得非常奇怪,因为以微软的资源和它的战略眼光来说,应该不会看不到Ajax技术的前景,唯一的解释也许就是因为当时它的主要竞争对手Netscape的消失反而使它变得麻痹和迟钝,毕竟巨人也有打盹的时候,比如IBM曾经在对微软战略上的失误。正是这一次的失误,成就了它现在的竞争对手Google在Ajax方面的领先地位,而事实上Google目前在Ajax技术方面的领先是微软所无法达到的,这一点在后面我讲述Ajax缺陷的时候也会提到。现在微软也意识到了这个问题,因此它也开始在Ajax领域奋起直追,比如说推出它自己的Ajax框架Atlas,并且在.NET2.0也提供了一个用来实现异步回调的接口,即ICallBack接口。那么微软为什么对自己在Ajax方面的落后如此紧张呢?现在就让我们来分析一下Ajax技术背后隐藏的深刻意义。
2、Ajax技术的意义
我们在平时的开发中都或多或少的接触或应用到了Ajax,谈到Ajax技术的意义,我们关注得最多的无疑是提升用户体验。但是,如果我们结合将来电脑和互联网的发展趋势,我们会发现Ajax技术在某些方面正好代表了这种趋势。为什么这样说呢?我们知道,自从电脑出现以来,一直是桌面软件占据着绝对主导的地位,但是互联网的出现和成功使这一切开始发生着微妙的变化。相当一部分的人都相信,迟早有一天,数据和电脑软件将会从桌面转移到互联网。也就是说,将来的电脑有可能抛弃笨重的硬盘,而直接从互联网获取数据和服务,我记得我念大学的时候,有位教授给我们上课的时候,曾经设想过这样一种情景,也许在将来的电脑桌面上,没有任何多余的软件和程序,而仅仅只有一个IE,虽然现在看起来我们距离这一天还很遥远,并且这其中还有很多的问题需要解决,但是我觉得这个并非梦想,而是迟早将实现的现实。那么,这其中的主要问题就是互联网的连接不稳定,谁也不愿意看着自己的电脑从服务器一点一滴的下载数据,那么,Ajax是不是解决了这个问题呢?说实话,与其说Ajax解决了这个问题,倒不如它只是掩盖了这个问题,它只是在服务器和客户端之间充当了一个缓冲器,让用户误以为服务没有中断。精确的说,Ajax并不能提高从服务器端下载数据的速度,而只是使这个等待不那么令人沮丧。但是正是这一点就足以产生巨大的影响和震动,它实际上也对桌面软件产生了巨大的冲击。这一点我用一个例子来说明,我们可以比较一下Outlook Express和Gmail,前者是典型的桌面软件,后者是Ajax实现的B/S模式,实际上后者目前已经在慢慢取代前者了,Gmail在收发邮件的时候已经和Outlook Express的功能几乎没有差别了,而且它不需要安装客户端程序。这就是为什么微软对Ajax所带来的冲击有着如此的恐惧心理,并且在它前不久所进行的调查之中,将Google看做他们未来十年内的主要竞争对手的主要原因之一。当然,这种变化也并不会将桌面软件全部淘汰,现有的浏览器还没有一个能像PhotoShop等桌面程序那样处理复杂的图像。但是我们也不能忽视它带来的影响和冲击。