1. Server 的数据推送
01. 轮循
比如第一代文字版聊天室,定时从客户端请求服务器端。
Ajax 和 XSS 等技术实现。
02. 长连接
WEB 版在线会议
IE 的 new Active Object('htmlfile'); //从 gtalk 开始
Mozilla 的 XmlHttpRequest 的 readyState == 3 时。
Flash 双向 Socket。
03. 伪长连接
Server 端数据推送“comet”。
Ajax 和 XSS。
Server 端等待请求,然后将 http 请求 hold 住。
04. 应用
轮循:文字聊天室、Session 延时。
长连接:WebIM、文件上传、语音视频传输、网页游戏。
伪长连接:WebIM、WebQQ。
之所以使用伪长连接是因为长连接超过 90 秒时在某些环境会被代理服务器掐断,而伪长连接 comet 控制在 30 - 60 秒内,更为合理。
2. 异域服务器数据交互
01. Html 嵌 JavaScript 文件
<script language="javascript" src="xxx.js"></script>
02. JavaScript 动态创建
<script language="javascript">
xxxxxxxx
</script>
实例:百度 cpro 广告脚本、网页数据采集、数据服务。
03. 网页直接通讯
iframe 嵌 iframe:
www.aaa.com/index.htm 嵌 www.bbb.com/index.htm,若想从 bbb.com 访问 aaa.com 的数据。
直接在 bbb.com 动态创建 aaa.com 域名下的 iframe,通过 url 带信息从而通过 parent.parent 传递到顶层页面。
3. 客户端网页跨浏览器的数据交互
flash 本地同步信息(flash 97% 的覆盖支持率)
比如用来存储网页即时通讯的聊天记录,多浏览器要保持数据一致性。
4. 数据的压缩处理
01. YUI Compressor
02. gzip //很成熟的技术,占不了多少服务器资源。
例:百度地图 YUI 压到 300k 左右,使用 gzip 到 100k。
5. Web 前后端交互的数据格式
01. 早期纯文本
使用特殊字符比如“|”分隔的固定格式文本,现在在证券软件还在使用类似存储和传输方式。
02. XML
不同浏览器解析差异很大
opera 8.5 之前不支持,IE 是使用 Active Object 实现,FireFox 直接由核心支持。
03. Json
05 年左右开始,js 中可直接使用的数据格式,与 XML 映射也比较方便。
6. 数据的客户的存储
01. UserData(IE)
IE5.0 起支持,只有 IE 支持,每域名本地有 640K 存储空间,单个文件支持 64K,不过可以设置,比如局域网可以设为 10M。
02. LocalStorage
2006 或 2007 开始出现,FF、Sofari、Opera 支持,IE 直到 IE8 尚未支持。
可能发展成类似 SQL 查询的性质。
03. Flash
每域名默认 128K,大小用户可设置。
用途:
本地存储、离线存储、离线功能开发。
7. 数据交互推动着 WEB 的发展
01. 聊天室和 WebIM 的需要:Server 数据推送
02. 脚本投放和开放 API 需要:跨域脚本
例如:网络在线输入法、百度搜索下拉提示
03. 跨域数据服务需要:Callback
04. 网页多媒体通讯需要:长连接
05. Web2.0 需要:Ajax
06. Web3.0 需要:????
推测:html5、flash + serverlet,更多在使用长连接、数据主动推送、数据双向推送等技术方面发展。
不局限于某一种技术,根据产品线应用。
会后问答总结:
百度使用优化过的 Linux、Apache,自己用 C 语言写的一些东西。1 台优化过的服务器一般负责承受 1 万左右并发,其实 2 - 3 万并发也可以承受。
Server 将 http 请求 hold 住,比如暂停或放于堆栈,不同语言处理不同。
数据交互通过 json 来做。
IE6 一个浏览器只支持两个长连接,再多就不行了,这是在使用一个域名的情况下,解决的办法是用多个域名来突破限制。
百度:黄方荣联系方式:huangfangrong@baidu.com