HTTP瓶颈


解决HTTP性能瓶颈,缩短Web页面的加载时间 (发音同speedy)

在一些网站上,海量的内容上传浏览更新,为了实时显示这些内容,HTTP的能力有限

下面的HTTP标准就会变成瓶颈

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

尝试解决方法

  • AJax

  • Comet

SPDY


通过在 TCP/IP 的应用层与运输层之间增加 新的会话层,并在通信的过程中使用SSL

HTTP 应用层
SPDY 会话层
SSL 表示层
TCP 传输层
  • 多路复用流

    通过单一TCP连接,无限制处理多个HTTP请求

    所有请求在一条TCP上完成,因此处理效率得到提高

  • 赋予请求优先级

    给无限制的请求逐个分配优先级顺序

    为了解决因带宽低而导致响应变慢的问题

  • 压缩HTTP首部

    通信产生的数据包数量和字节量减少

  • 推送功能

    支持服务器主动向客户端推送数据

  • 服务器提示功能

    服务器主动提示客户端请求所需的资源(资源已缓存)

WebSocket


WebSoeket 即服务器和客户端之间的全双工通信标准

全双工

就是双方可以同时在两个方向传输数据

  1. 可以互相发送JSON,XML,HTML或图片等任意格式的数据
  2. 连接的发起人仍旧是客户端
  • 握手/请求

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

    Upgrade : websocket

    Sec-WebSocket-Key: …………..

  • 握手/响应

    对于请求需要返回响应

    HTTP/1.1 101 Switching Protocols

    Upgrade: websocket

    Connnection: Upgrade

    Sec-WebSocket-Accept: string… // 这个值实在请求发送的Sec-WS-Key的字段值生成的

    Sec-WebSocket - Protocol: chat

确立WebSocket连接后,通信时就会使用WebSocket独立的数据帧

了解一下吧,没啥意思………..