《圖解HTTP》基於HTTP的功能追加協議

1、消除HTTP瓶頸的SPDY

  目標是解決http的性能瓶頸,縮短web頁面的加載時間web

一、HTTP的瓶頸

  使用HTTP協議必須從客戶端到服務器進行確認,若服務器沒有更新就產生徒勞的通訊瀏覽器

  HTTP的瓶頸緩存

    一條鏈接上只能夠發送一個請求服務器

    請求只能從客戶端開始,客戶端不能夠接收除響應之外的指令websocket

    請求/響應首部未經壓縮就發送,首部信息越多延遲越大異步

    發送冗長的首部。每次互相發送相同的首部形成的浪費較多socket

    可任意選擇數據壓縮格式。非強制壓縮發送分佈式

  Ajax的解決方法性能

    Ajax是一種有效利用js和DOM的操做,以達到局部Web頁面替換加載的異步通訊手段。網站

    優勢:它只更新局部頁面,傳輸的數據量變小

    缺點:實時獲取內容會產生大量請求

       HTTP協議自己的問題還存在

  Comet的解決方法

    服務器接收請求後,Comet會先將響應掛起。一旦但服務器有更新,當即給客戶端響應。

    優勢:能夠作到實時更新

    缺點:爲了保留響應,一次鏈接的持續時間變長了,會消耗資源

       HTTP協議自己的問題還存在

2、SPDY 的設計與功能

  SPDY在TCP/IP的應用層與傳輸層之間加入的會話層(SPDY通訊使用SSL)

  優勢:

    (1)  多路複用流:單一的TCP能夠處理多個http請求。TCP的處理效率提升。

  (2)賦予請求優先級:給請求逐個分配優先級順序,解決因帶寬低致使響應變慢的問題。

  (3)壓縮HTTP首部:壓縮請求和響應的首部。通訊的數據包數量和發送的字節變小。

  (4)推送功能:支持服務器主動向客戶端推送數據。沒必要等待客戶端請求。

  (5)服務器提示功能:主動提示客戶端請求所需的資源。若資源已緩存可避免發送請求。

  缺點:

  (1)SPDY是將單個IP地址的通訊多路複用,若網站使用多個域名下的資源,改善比較差。

  (2)不能改變web自己的速度

3、使用瀏覽器進行全雙工通訊的WebSocket

  WebSocket逐步成爲獨立的協議標準。

一、WebSocket的設計與功能:

  WebSocket只要解決Ajax和Comet裏XMLHttpRequest附帶的缺陷所引發的問題

二、WebSocket協議:

  一旦web服務器和客戶端之間創建起WebSocket協議的通訊鏈接,(不管客戶端仍是服務器均可以直接發送報文)

三、WebSocket協議特色:

  推送功能:支持服務器向客戶端推送數據

  減小通訊量:一致保存鏈接狀態,總開銷還減小。(緣由,首部信息少)

(1)握手、請求:

  須要用到HTTP的Upgrade首部字段告訴服務器使用WebSocket通訊。

  Sec-WebSockey-Key:記錄握手必不可少的鍵值

  Sec-WebSockey-Key:記錄使用的子協議

image.png

(2)握手、響應

  對於以前的請求,返回狀態碼101 Switching Protocols 的響應

image.png

(3)WebSocket API

  JS可調用 the WebSocket API內提供的WebSocket程序接口,以實現WebSocket協議下全雙工通訊,

四、期盼已久的HTTP/2.0

  HTTP/2.0特色:

     改善用戶使用Web時的速度體驗

  HTTP2.0性能加強的核心

     二進制分幀

  HTTP 2.0最大的特色

     不會改動HTTP 的語義,HTTP 方法、狀態碼、URI 及首部字段,等等這些核心概念上一如往常,卻能致力於突破上一代標準的性能限制,改進傳輸性能,實現低延遲和高吞吐量

  HTTP 2.0是在應用層(HTTP2.0)和傳輸層(TCP or UDP)之間增長一個二進制分幀層

一、HTTP/2.0的實現方法:

  (1)SPDY

  (2)HTTP Speed+Mobility (微軟起草,用於改善並提升移動端通訊時的通訊速度和性能的標準,它創建在Google提出的SPDY與WebSocket的基礎之上)

  (3)NetWork-Friendly HTTP Upgrade (主要在移動端通訊時改善HTTP性能的標準) 

二、 HTTP/2.0的特性:

  (1)HTTP/2使用二進制數據流,HTTP/1.x使用效率較低的文本數據。 

  (2)HTTP/2支持首部壓縮

  在請求後,返回的數據包括描述信息:來源,類型,長度,能夠緩存的時間等。而且在HTTP/2中進行了壓縮。

  (3)HTTP/2使用管道Pipelining傳輸(雙向字節流)

  在HTTP1.1中服務器必須與接收請求,以相同的順序進行收發響應。HTTP/2支持異步,能夠更快的處理響應。

  (4)HTTP/2支持多路複用

  在HTTP1.1裏,在任什麼時候間只能在TCP鏈接處理一個請求,瀏覽器同時請求幾個鏈接時,若是是大或慢的資源會致使文件下載延遲。HTTP/2能夠容許在同一時間的單個鏈接發出多個請求和接收多個響應。

  (5)HTTP/2支持請求優先級

  (6)HTTP/2支持服務器推送

5、Web服務器管理文件的WebDAV

  WebDAV:對web服務器的內容直接進行文件複製、編輯、加鎖等操做的分佈式系統

一、擴展HTTP/1.1的WebDAV

  集合:是一種統一管理多個資源的概念。以集合爲單位可進行各類操做。也可實現相似集合的集合這樣的疊加。

  資源:把文件或集合稱爲資源

  屬性:定義資源的屬性。定義以「名稱=值」的格式執行。

  鎖:把文件設置成沒法編輯狀態。多我的同時編輯時,可防止在同一時間進行內容寫入。

二、WebDAV內新增的方法及狀態碼

  目的:實現遠程文件管理

  增長的方法以下:

    propfind:獲取屬性

    proppatch:修改屬性

    mkcol:建立集合

    copy:複製資源及屬性

    move:移動資源

    lock:資源加鎖

    unlock:資源解鎖

  擴展的狀態碼以下:

    102 Processing:可正常處理請求,但目前是處理中狀態

    207 Multi-Status:存在多種狀態

    422 Unprocessible Entily:格式正確,內容有誤

    424 Failed Dependency:處理與某請求關聯的請求失敗,所以再也不維持依賴關係

    507 Insufficient Storage:保存空間不足

  HTTP普遍使用的緣由:

    一、防火牆能夠禁止非指定協議和端口

    二、web的使用率最高(HTTP的端口80、HTTPS的端口443)

    三、http導入簡單

    四、http服務器、客戶端已成規模

相關文章
相關標籤/搜索