AJAX In Google
来源:互联网 发布:36周胎儿b超数据标准 编辑:程序博客网 时间:2024/04/29 18:50
Google,囊括了美国顶尖的Web开发高手,开发的Gmail、Google Reader、Google Maps也是Web2.0应用的经典。
它们都是AJAX技术的杰出应用,然而有趣的是,他们使用的技术却各有不同。这也许是因为不同的开发小组的风格不同,但一些细节却透露出这也许是Google高手们针对不同应用的不同需求采用了不同的实现方法,以达到最完美的效果。真正的高手的高就在于此吧。
下面来分别看看这几个应用。
1、Gmail:
Gmail使用自己独特的协议在HTTP层进行浏览器和Web服务器之间的通信。
首先,浏览器端通过Javascript XmlHttpRequest向 服务器发送请求,比如请求Inbox信息的URL为: /gmail?search=inbox&view=tl&start=0&init=1&zx=,而请求所有未读信息 的URL为:/gmail?search=query&q=is%3Aunread&view=tl&start=0& init=1&zx=。然后,服务器返回称为DataPack的数据块。
Google做的第一个有意思的事情是,这个DataPack并不是基于XML的,而是一个基于Javascript数组格式的HTML文件。它可 以包括多个DataItem,而一个DataItem是由一个封装函数包括的Javascript数组,例如这样的格式:D([”ts”, 0,50,106,0,”Inbox”,”fd36721220″,154]); 这里的D()是一个实时解析函数,而”ts”是DataItem的类型。
这样做的好处是:客户端Javascript程序可以避免对XML的解析而直接使用这些数据,从而能提高处理速度并节省系统资源。
此外,Gmail客户端每隔2分钟会自动向服务器发送刷新请求,在这里Gmail又做了一个优化。那就是在刷新请求里有一个时标(又有点象 CheckSum)。然后Gmail服务器如果发现当前数据不比这个时标代表的数据新,它就会仅仅返回一个空的DataPack,以节省网络和系统资源。
2、Google Suggest
Google Suggest同样使用Javascript定时向服务器发送XmlHTTP请求,而服务器返回的是一个Javascript回调函数。回调函数的格式 如:sendRPCDone(frameElement, “fast bug”, new Array(”fast bug track”, “fast bugs”, “fast bug”, “fast bugtrack”), new Array(”793,000 results”, “2,040,000 results”, “6,000,000 results”, “7,910 results”), new Array(”")); 其中,sendRPCDone是一个本地定义的Javascript函数。
收到服务器返回的回调函数后,本地网页利用Javascript eval()函数直接执行返回的函数,将结果显示出来。简单、直接。
值得一提的是,研究Goolge Suggest的Chris将Google精简却难以理解的Javscript程序重写了,值得想要学习Javascript的同志们一看。Google将他的Javascript程序精简是可以理解的,因为可以压缩代码大小,从而提高网页下载速度。
3、Google Maps
和前面两者不同,Google Maps本地端不使用XmlHTTP,而是使用IFrame。而服务器端返回的是一个HTML文件。这个文件在本地网页中隐藏的一个IFrame里打开。 当它被打开时,它通过调用window.parent._load()函数,将自己包括的、由服务器返回的XML数据块传给本地网页,从而完成浏览器到服 务器的数据交互。
用IFrame的好处是,IFrame会将自己的状态记入浏览器的历史状态中,这样,用户可以通过按浏览器的”返回”按钮,回到以前的地图。而XmlHttp因为不计入浏览器的历史中,所以如果用XmlHttp的话,就只能回到进Google Map以前的那个网页了。
而Google Maps的另一个特点是,本地网页收到数据块后,依旧利用浏览器内置的XmlHttpRequest进行解析,然后利用XSL进行显示,非常的格式化。
- AJAX In Google 初探
- AJAX In Google
- GWT in Action: Easy Ajax with the Google Web Toolkit
- google ajax
- ajax google
- Build Google IG like Ajax Start Page in 7 days using ASP.NET Ajax and .NET 3.0
- Google Ajax Search 参考
- Google AJAX 教程
- google ajax 翻译
- google ajax translate
- 使用 Google AJAX API
- Google AJAX 搜索 API
- Google AJAX 搜索 API
- Google Ajax Library
- Live In Google
- think in google
- code review in google
- Google In App Billing
- 软件架构
- 我们
- 瞄准泰国、香港 NEC积极拓展海外IPTV市场
- CSS:word-wrap同word-break的区别
- USB入门
- AJAX In Google
- 自己编写基于MVC的轻量级PHP框架.
- 一些常用.NET代码~
- Oracle的锁表与解锁
- C# 中如何将DataTable表中数据转到数据库表中?
- 自己动手做QQ(毕业设计)—p2p聊天工具(IM)源代码
- Visual C#.Net 网络程序开发-Socket篇
- 介绍三种处理IIS中无法打开asp页面的方法
- c# ping