zoukankan      html  css  js  c++  java
  • 基于HTTP的功能追加协议

    一、HTTP的瓶颈

    使用HTTP协议探知服务器上是否有内容更新,就必须频繁地发送请求给服务器
    这种“轮询”的方式效率很低,非常浪费资源
    除此之外,HTTP还存在如下瓶颈:

    • 一条连接上只能发送一个请求
    • 请求/响应首部未经压缩就发送
    • 首部信息冗余

    二、Ajax和Comet的解决方法

    Ajax

    Ajax是一种利用javascript和DOM的操作,以达到局部Web页面替换加载的异步通信手段
    由于它只更新一部分页面,响应中传输的数据量也就会减少
    然而,利用Ajax从服务器获取内容,仍然会导致大量请求发送,未解决HTTP协议本身的问题


    Comet

    通常,服务器收到请求后会立即响应
    但为了实现推送功能,Comet会先将响应置于挂起状态
    当服务器有内容更新时,再向客户端返回响应
    内容上虽然可以做到实时更新,但为了挂起响应,一次连接持续的时间也变长了,导致服务器需要消耗更多的资源来维持连接

    三、SPDY

    SPDY是Google开发的会话层协议,会话层处于应用层和传输层之间,主要用于提升网络速度(在通信中使用SSL)
    使用SPDY后,HTTP协议额外获得以下功能:
    1、多路复用流
    通过单一的TCP连接,可以无限制地处理多个HTTP请求
    2、赋予请求优先级
    可以给客户端的请求逐个分配优先级,避免因带宽低而导致响应慢的问题
    3、压缩HTTP首部
    压缩请求和响应报文的首部,从而减少传输的数据量
    4、服务器推送功能
    服务器可以主动向客户端推送数据,而不必等待请求
    5、服务器提示功能
    服务器可以主动提示客户端请求所需的资源,使得客户端可以避免发送不必要的请求

    四、Websocket

    Websocket最大的特点是:
    服务器/客户端都可以直接向对方发送数据,是真正的双向平等对话
    为了实现Websocket通信,在建立HTTP连接之后,需要完成一次握手
    1、客户端发送HTTP请求
    在请求报文中,需要设置 Upgrade首部字段值为 websocket
    2、服务器响应
    服务器返回状态码 101 Switching Protocols
    3、全双工通信
    成功握手建立Websocket连接后,通信时采用Websocket独立的数据帧,并以ws作为协议标识符

  • 相关阅读:
    GO语言并发
    NEERC2017:L
    bzoj2823[AHOI2012]信号塔
    bzoj1336[Balkan2002]Alien最小圆覆盖
    bzoj1069[SCOI2007]最大土地面积
    ACM2017Tsukuba:H
    ACM2015沈阳:B-Bazinga
    bzoj2724[Violet 6]蒲公英
    [bzoj4066]简单题
    [bzoj2125]最短路
  • 原文地址:https://www.cnblogs.com/baebae996/p/13816707.html
Copyright © 2011-2022 走看看