HTTP图解读书笔记(第九章 基于HTTP的功能追加协议)

消除HTTP瓶颈的SPDY

旨在解决HTTP的性能瓶颈,减少Web页面的加载时间(50%)

  • HTTP的瓶颈

       对于实时更新的页面,需要客户端不断的发送请求给服务器,如果服务器没有更新,则就产生了徒劳的通信。

       为了实现实时更新等Web应用的功能HTTP 存在以下局限:

       1.一条连接上只能发送一个请求

       2.请求只能从客户端发起,客户端不能接受除响应以外的指令

       3.请求/响应首部未经压缩就发送,首部信息越多越延迟

       4.每次互相发送相同的首部,造成浪费

       5.可任意选择数据压缩格式,非强制压缩发送

       解决办法:

       1.Ajax

       实现了异步刷新,只更新局部页面,减少了响应中传输的数据量

       但是利用Ajax实时的向服务端发送请求,也可能需要发送大量的请求,仍然没解决HTTP的问题。

       2.Comet

       通常客户端发送请求给服务端,服务端做出处理后会立即响应。而Comet则先将请求挂起,直到服务端资源更新,然后立即返回响应,这是通过延迟应答,模拟服务端向客户端推送的功能。

       缺点:虽然内容做到了实时更新,但是一次连接变长,消耗更多的资源,也没有实际的解决问题。

       3.SPDY

       SPDY并没有完全改写HTTP,它在应用层与传输层之间增加了会话层,考虑安全问题,SPDY规定通信使用SSL

       SPDY 以会话层的形式加入,控制对数据的流动,但还是采用 HTTP建立通信连接。因此,可照常使用 HTTP 的 GET 和 POST 等方 法、Cookie 以及 HTTP 报文等

       使用 SPDY 后,HTTP 协议额外获得以下功能:

       多路复用:

       通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。所有请求的处理都在一条 TCP 连接上完成,因此 TCP 的处理效率得到提高

       赋予请求优先级:

       SPDY 不仅可以无限制地并发处理请求,还可以给请求逐个分配优先级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题

       压缩 HTTP 首部:

       推送功能:

       支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求。

       服务器提示功能:

       服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求

使用浏览器进行全双工通信的WebSocket

一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、XML、HTML或图片等任意格式的数据 

由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端,而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文

WebSocket协议的主要特点

  • 推送功能:服务端向客户端推送数据
  • 减少通信量:一旦建立WebSocket连接就希望一直保持下去;报文首部信息小

为了实现 WebSocket 通信,在 HTTP 连接建立之后,需要完成一次“握手”(Handshaking)的步骤。 

  • 握手请求

       用到 HTTP 的 Upgrade 首部字段,告知服务器通信协议发生改变,以达到握手的目的

  • 握手响应

       对于之前的请求,返回状态码 101 Switching Protocols 的响应

       成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数据帧,而采用 WebSocket 独立的数据

      

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值