基于 HTTP 的追加协议
在建立 HTTP 标准规范时,制订者主要想把 HTTP 当作传输 HTML 文档的协议。随着时代的发展,Web 的用途更具多样性,比如演化成在线购物网站、SNS(Social Networking Service,社交网络服务)、企业或组织内部的各种管理工具,等等。
而这些网站所追求的功能可通过 Web 应用和脚本程序实现。即使这些功能已经满足需求,在性能上却未必最优,这是因为 HTTP 协议上的限制以及自身性能有限。
HTTP 功能上的不足可通过创建一套全新的协议来弥补。可是目前基于 HTTP 的 Web 浏览器的使用环境已遍布全球,因此无法完全抛弃 HTTP。有一些新协议的规则是基于 HTTP 的,并在此基础上添加了新的功能。
1. HTTP 的瓶颈
若想在现有 Web 实现所需的功能,以下这些 HTTP 标准就会成为瓶颈:
有的是在 HTTP/1.1 之前的版本才算问题吧。.....
- 一条连接上只可发送一个请求
- 请求只能从客户端开始,客户端不可以接收除响应以外的指令
- 请求/响应首部未经压缩就发送。首部信息越多延迟越大
- 发送冗长的首部,每次互相发送相同的首部造成的浪费较多
- 可任意选择数据压缩格式,非强制压缩发送
1.1 Ajax 的解决办法
Ajax(Asynchronous JavaScript and XML,异 步 JavaScript 与 XML 技术)是一种有效利用 JavaScript 和 DOM 的操作,以达到局部 Web 页面替换加载的异步通信手段。
Ajax 的核心技术是名为 XMLHttpRequest 的 API,通过 JavaScript 脚本语言的调用就能和服务器进行 HTTP 通信。借由这种手段,就能从已加载完毕的 Web 页面上发起请求,只更新局部页面。
和以前的同步通信相比,由于它只更新一部分页面,响应中传输的数据量会因此而减少,这一优点显而易见。
而利用 Ajax 实时地从服务器获取内容,有可能会导致大量请求产生。
然而无论如何,Ajax 仍未解决 HTTP 协议本身存在的问题。
1.2 Comet 通信
具体情况需要时再说吧,总之仍未解决 HTTP 协议本身存在的问题。
2. SPDY 协议
SPDY 的确是一种可有效消除 HTTP 瓶颈的技术,但进展不佳,以后再说吧。.....
3. WebSocket 协议
WebSocket,即 Web 浏览器与 Web 服务器之间全双工通信标准。其中,WebSocket 协议由 IETF 定为标准,WebSocket API 由 W3C 定为标准。
一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送 JSON、XML、HTML 或图片等任意格式的据。
由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端,而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文。
WebSocket 协议的主要特点为:
- 推送功能:支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
- 减少通信量:只要建立起 WebSocket 连接,就希望一直保持连接状态。和 HTTP 相比,不但每次连接时的总开销减少,而且由于 WebSocket 的首部信息很小,通信量也相应减少了。
WebSocket 连接建立的过程如下图:
4. HTTP/2.0
广泛应用了再说吧。.....