天天看點

HTTP_CONNECTION:Keep-Alive

名詞解釋:

HTTP無狀态:無狀态是指協定對于事務處理沒有記憶能力,伺服器不知道用戶端是什麼狀态。從另一方面講,打開一個伺服器上的網頁和你之前打開這個伺服器上的網頁之間沒有任何聯系

如果你要實作一個購物車,需要借助于Cookie或Session或伺服器端API(如NSAPI and ISAPI)記錄這些資訊,請求伺服器結算頁面時同時将這些資訊送出到伺服器

當你登入到一個網站時,你的登入狀态也是由Cookie或Session來“記憶”的,因為伺服器并不知道你是否登入

優點:伺服器不用為每個用戶端連接配接配置設定記憶體來記憶大量狀态,也不用在用戶端失去連接配接時去清理記憶體,以更高效地去處理WEB業務

缺點:用戶端的每次請求都需要攜帶相應參數,伺服器需要處理這些參數

參考:http://en.wikipedia.org/wiki/Stateless_protocol,http://www.webopedia.com/TERM/S/stateless.html

Keep-Alive:參考另外一篇文章HTTP Keep-Alive 詳解

容易犯的誤區:

1、HTTP是一個無狀态的面向連接配接的協定,無狀态不代表HTTP不能保持TCP連接配接,更不能代表HTTP使用的是UDP協定(無連接配接)

2、從HTTP/1.1起,預設都開啟了Keep-Alive,保持連接配接特性,簡單地說,當一個網頁打開完成後,用戶端和伺服器之間用于傳輸HTTP資料的TCP連接配接不會關閉,如果用戶端再次通路這個伺服器上的網頁,會繼續使用這一條已經建立的連接配接

3、Keep-Alive不會永久保持連接配接,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間

http://liuzhigong.blog.163.com/blog/static/178272375201141344312315/

  1. 在HTTP1.0中,沒有正式規定 Connection:Keep-alive 操作;在HTTP1.1中所有連接配接都是Keep-alive的,也就是預設都是持續連接配接的(Persistent Connection)。
  2. 兩種的連接配接方式的差別如下圖所示
  3. 從上圖可以看出,用戶端與伺服器建立持續連接配接後,在連接配接期間可以處理多個請求/響應(Request/Response)
HTTP_CONNECTION:Keep-Alive