图解HTTP读书笔记.第九章

第九章

消除HTTP瓶颈的SPDY
Google发布的SPeeDY,目的是解决HTTP的性能瓶颈,缩短web页面的加载时间

HTTP的瓶颈:
为了尽可能实时更新web内容,服务器上一旦有内容更新,就需要直接把内容反馈到客户端界面上。
但是使用HTTP协议探知服务器上的内容是否需要更新,需要频繁的从客户端到服务器端进行确认。如果没有更新,就会产生徒劳的通信
以下的HTTP标准会称为瓶颈:

  1. 一条连接上只发送一个请求
  2. 请求只能从客户端开始,客户端不能接受除响应之外的指令
  3. 请求/响应首部未经压缩就发送。首部信息越多延迟越大。
  4. 发送冗长的首部,每次互相发送相同的首部造成的浪费较多
  5. 可任意选择疏解压缩格式。非强制发送

Ajax解决方法:是一种利用javascript和DOM的操作。以达到局部Web 页面替换加载的异步通信手段,和以前的同步通信相比,由于它只更新一部分页面,响应中的传输数据量就会减少。
但利用Ajax实时的从服务器获取内容,有可能会导致大量请求产生。

Comet解决方法:一旦服务器端有更新,Comet不会让请求等待,而是直接给客户端返回响应。这是一种通过延迟应答,模拟实现服务器端向客户端推送的功能
内部机制:Comet会将服务器端的响应置于挂起阶段,当服务器端内部有更新,再返回该响应。
虽然可以做到实时更新,但为了保留响应,一次连接的持续时间也变长了

SPDY
并没有完全改写HTTP,而是在TCP/IP的应用层与传输层之间通过新加会话层的形式运作。同时SPDY规定通信中使用SSL。
使用之后HTTP协议额外获得以下功能:

  1. 多路复合流
    通过单一的TCP连接,可以无限处理多个HTTP请求,所有请求的处理都在一条TCP连接上完成,因此TCP处理效率得到提高
  2. 赋予请求优先级
    不仅可以无限制的发送请求,还可以给请求逐个分配优先级顺序。有助于解决因宽带低而导致响应变慢的问题
  3. 压缩HTTP首部
    压缩HTTP请求和响应的首部,通信产生的数据包数量和发送的字节数就更少了
  4. 推送功能
    支持服务器主动向客户端推送数据的功能。服务器可以直接发送数据,而不必等客户端的请求
  5. 服务器提示功能
    服务器可以主动提示客户端请求所需的资源。由于客户端发现资源之前就可以获知资源的存在,因此在资源已经缓存的情况下,可以避免发送不必要的请求

SPDY彻底消除Web瓶颈了吗?

使用浏览器进行全双工通信的Websocket
Websocket协议:一旦Web服务器与客户端之间建立起Websocket协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信中可以发送任意格式的数据。
由于是建立在HTTP基础上的协议,因此连接的发起方仍然是客户端,但一旦建立,任意一方都可以向对方发送报文
Websocket的特点:

  1. 推送功能
  2. 减少通信量
    只要建立起Websocket连接,就希望一直保持连接状态,和HTTP相比,不但每次连接时候的总开销减少。而且由于Websocket首部信息量很小。通信量也相应减少了。

为了实现Websockt通信,在HTTP连接建立之后,需要完成一次握手的步骤:
用HTTP的upgrade首部字段,告知服务器通信协议发生改变。
Sec-Websocket-Key字段内记录着握手过程中不可少的键值。
Sec-Websocket-Protocol字段内记录着使用的子协议。
其响应为状态码101 Switching protocols

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值