消除HTTP瓶颈的SPDY

  • HTTP的瓶颈😞
    • 一条连接上只可发送一个请求。
    • 请求只能从客户端开始。客户端不可以接收除响应以外的指令。
    • 请求/响应首部未经压缩就发送。首部信息越多延迟越大。
    • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多。
    • 可任意选择数据压缩格式。非强制压缩发送。
  • Ajax:可以只更新部分页面,响应中传输的数据量会因此减少;而利用Ajax实时地从服务器获取内容,有可能会导致大量请求产生。另外,Ajax仍未解决HTTP协议本身存在的问题。
  • Commt:为了实现推送功能,Comet会先将响应置于挂起状态,当服务器端有内容更新时,再返回该响应。因此,服务器端一旦有更新,就可以立即反馈给客户端。这种方式使一次连接的持续时间变长了,维持连接会消耗更多的资源。仍未解决HTTP协议本身存在的问题。
  • 使用SPDY后,HTTP协议额外获得以下功能。😀

    • 多路复用

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

    • 赋予请求优先级

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

    • 压缩HTTP首部

      压缩HTTP请求和响应的首部。这样一来,通信产生的数据包数量和发送的字节数就更少了。

    • 推送功能

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

    • 服务器提示功能

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

  • SPDY消除瓶颈了吗🤔️
    因为SPDY基本上只是将单个域名(IP地址)的通信多路复用,所以当一个Web网站上使用多个域名下的资源,改善效果就会受到限制。
    SPDY的确是一种可有效消除HTTP瓶颈的技术,但很多Web网站存在的问题并非仅仅是由HTTP瓶颈所导致。对Web本身的速度提升,还应该从其他可细致钻研的地方入手,比如改善Web内容的编写方式等。

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

利用Ajax和Comet技术进行通信可以提升Web的浏览速度。但问题在于通信若使用HTTP协议,就无法彻底解决瓶颈问题。WebSocket网络技术正是为解决这些问题而实现的一套新协议及API。

  • 主要特点:

    • 推送功能

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

    • 减少通信量

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

  • Web服务器管理文件的WebDAV📃

使用HTTP/1.1的PUT方法和DELETE方法,就可以对Web服务器上的文件进行创建和删除操作。可是出于安全性及便捷性等考虑,一般不使用。

  • WebDAV新增的概念
    — 集合:是一种统一管理多个资源的概念。以集合为单位可进行各种操作。也可实现类似集合的集合这样的叠加。
    • 资源:把文件或集合称为资源。
    • 属性:定义资源的属性。定义以“名称=值”的格式执行。
    • 锁:把文件设置成无法编辑状态。多人同时编辑时,可防止在同一时间进行内容写入。
  • WebDAV新增的方法和状态码
    • PROPFIND:获取属性
    • PROPPATCH:修改属性
    • MKCOL:创建集合
    • COPY:复制资源及属性
    • MOVE:移动资源
    • LOCK:资源加锁
    • UNLOCK:资源解锁为配合扩展的方法,状态码也随之扩展。
    • 102 Processing:可正常处理请求,但目前是处理中状态
    • 207 Multi-Status:存在多种状态
    • 422 Unprocessible Entity:格式正确,内容有误
    • 423 Locked:资源已被加锁
    • 424 Failed Dependency:处理与某请求关联的请求失败,因此不再维持依赖关系
    • 507 Insufficient Storage:保存空间不足