一、HTTP 的瓶颈 :
- 一条连接上只可发送一个请求。
- 请求只能从客户端开始。客户端不可以接收除响应以外的指令。
- 请求 / 响应首部未经压缩就发送。首部信息越多延迟越大。
- 发送冗长的首部。每次互相发送相同的首部造成的浪费较多
虽然HTTP协议既简单又简捷,但随着时代的发展,其功能使用上的疲态已经凸显。本章我们将讲解基于HTTP新增的功能的协议。
二、Ajax、Comet和SPDY
1、Ajax技术:Asynchronous JavaScript and XML, 异 步 JavaScript 与 XML技 术)是一种有效利用 JavaScript 和 DOM(Document Object Model,文 档对象模型)的操作,以达到局部 Web 页面替换加载的异步通信手段。和以前的同步通信相比,由于它只更新一部分页面,响应中传输的数据量会因此而减少,这一优点显而易见。
2、Comet技术:一旦服务器端有内容更新了,Comet 不会让请求等待,而是直接给客户端返回响应。这是一种通过延迟应答,模拟实现服务器端向客户端 推送(Server Push)的功能
使用SPDY后,HTTP协议额外获得以下功能:
- 多路复用流:一个TCP连接,可以处理无限多个HTTP请求;
- 赋予请求优先级:解决因宽带低而导致响应变慢的问题。
- 压缩HTTP首部;
- 推送功能:支持服务器主动向客户端推送数据的功能。
- 服务器提示功能:服务器可以主动提示客户端请求所需的资源。客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求
SPDY消除Web瓶颈了吗
- 实际运用状态不佳
- 只将单个域名的通信多路复用,因为SPDY基本上只是将单个域名的通信多路复用,当一个Web网站上使用多个域名下的资源,改善效果就会受限。
- 并非所有瓶颈问题都是因为HTTP问题,所以还需要其他方面的改善。
三、使用浏览器进行全双工通信WebSocket
1、问题在于通信若使用HTTP协议,就无法彻底解决瓶颈问题。
- WebSocket的设计与功能:解决XMLHttpRequest附带的缺陷引起的问题。
- WebSocket协议:一旦服务器与客户端建立起该协议的通信,之后所有的通信都依靠这个专用协议进行。因为基于HTTP,因此发起方仍是客户端。
- 推送功能
- 减少通信量:连接就一直保持连接状态。和HTTP相比,不但每次连接时的总开销减少,由于WebSocket的首部信息很小,通信量也相应减少了。
2、WebSocket通信过程:
握手-请求:为了实现WebSocket通信,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
握手-响应:对于之前的请求,返回状态码101 Switching Protocols的响应。
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat
3、WebSocket API
JavaScript 可调用“The WebSocket API”(http://www.w3.org/TR/websockets/,由 W3C 标准制定)内 提供的 WebSocket 程序接口,以实现 WebSocket 协议下全双工通 信。以下为调用 WebSocket API,每50ms发送一次数据的实例。
var socket = new WebSocket('ws://game.example.com:12010/updates');
socket.onopen = function () {
setInterval(function() {
if (socket.bufferedAmount == 0) socket.send(getUpdateData());
}, 50);
};
四、期盼已久的 HTTP/2.0
- SPDY
- HTTP Speed + Mobility
- Network-Friendly HTTP Upgrade
1、HTTP Speed + Mobility 由微软公司起草,是用于改善并提高移动端 通信时的通信速度和性能的标准。它建立在 Google 公司提出的 SPDY 与 WebSocket 的基础之上。
2、Network-Friendly HTTP Upgrade 主要是在移动端通信时改善 HTTP 性能的标准。
HTTP/2.0 围绕着主要的 7 项技术进行讨论,现阶段(2012 年 8 月 13 日),大都倾向于采用以下协议的技术。但是,讨论仍在持续,所以 不能排除会发生重大改变的可能性。
五、 Web服务器管理文件的WebDev
WebDAV(Web-based Distributed Authoring and Versioning,基于万维网 的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。它作为扩展 HTTP/1.1 的协议定义在 RFC4918。
除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的版本控制功能