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作为协议标识符

  • 相关阅读:
    Redis string
    java 是 传值还是传址 Pass-by-value or Pass-by-reference
    IDEA 适用技巧
    测试 MD
    pyqt5 学习总结
    win10 安装anaconda 无法使用pip 报错缺少SSL模块
    Hadoop datanode无法启动
    Ansible 安装jdk
    java 安装后 不能 java javac 说找不到命令 -bash: javac: command not found
    如何去掉MapReduce输出的默认分隔符
  • 原文地址:https://www.cnblogs.com/baebae996/p/13816707.html
Copyright © 2011-2022 走看看