《圖解HTTP》讀書筆記二:簡單的 HTTP 協議

衣舞晨風發表於2018-02-15

2.7 持久連線節省通訊量

2.7.1 持久連線

      為解決上述 TCP 連線的問題,HTTP/1.1 和一部分的 HTTP/1.0 想出了持久連線(HTTP Persistent Connections,也稱為 HTTP keep-alive 或HTTP connection reuse)的方法。持久連線的特點是,只要任意一端沒有明確提出斷開連線,則保持 TCP 連線狀態。
這裡寫圖片描述
圖:持久連線旨在建立 1 次 TCP 連線後進行多次請求和響應的互動

      持久連線的好處在於減少了 TCP 連線的重複建立和斷開所造成的額外開銷,減輕了伺服器端的負載。另外,減少開銷的那部分時間,使HTTP 請求和響應能夠更早地結束,這樣 Web 頁面的顯示速度也就相應提高了。

      在 HTTP/1.1 中,所有的連線預設都是持久連線,但在 HTTP/1.0 內並未標準化。雖然有一部分伺服器通過非標準的手段實現了持久連線,但伺服器端不一定能夠支援持久連線。毫無疑問,除了伺服器端,客戶端也需要支援持久連線。

2.7.2 管線化

      持久連線使得多數請求以管線化(pipelining)方式傳送成為可能。從前傳送請求後需等待並收到響應,才能傳送下一個請求。管線化技術出現後,不用等待響應亦可直接傳送下一個請求。這樣就能夠做到同時並行傳送多個請求,而不需要一個接一個地等待響應了。

2.8 使用 Cookie 的狀態管理

      Cookie 技術通過在請求和響應報文中寫入 Cookie 資訊來控制客戶端的狀態。
      Cookie 會根據從伺服器端傳送的響應報文內的一個叫做 Set-Cookie 的首部欄位資訊,通知客戶端儲存 Cookie。當下次客戶端再往該伺服器傳送請求時,客戶端會自動在請求報文中加入 Cookie 值後傳送出
去。
      伺服器端發現客戶端傳送過來的 Cookie 後,會去檢查究竟是從哪一個客戶端發來的連線請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。

這裡寫圖片描述

這裡寫圖片描述
上圖展示了發生 Cookie 互動的情景,HTTP 請求報文和響應報文的內容如下。
1、 請求報文(沒有 Cookie 資訊的狀態)

GET /reader/ HTTP/1.1
Host: hackr.jp
*首部欄位內沒有Cookie的相關資訊

2、響應報文(伺服器端生成 Cookie 資訊)

HTTP/1.1 200 OK
Date: Thu, 12 Jul 2012 07:12:20 GMT
Server: Apache
<Set-Cookie: sid=1342077140226724; path=/; expires=Wed,
10-Oct-12 07:12:20 GMT>
Content-Type: text/plain; charset=UTF-8

3、請求報文(自動傳送儲存著的 Cookie 資訊)

GET /image/ HTTP/1.1
Host: hackr.jp
Cookie: sid=1342077140226724

《圖解HTTP》下載地址:
http://download.csdn.net/download/xunzaosiyecao/10252084
個人微信公眾號:
這裡寫圖片描述

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章