HTTP是一個
請求<->響應模式的典型範例,即客戶端向服務器發送一個請求信息,服務器來響應這個信息。在老的HTTP版本中,每一個請求都將被建立一個新的
客戶端->服務器的鏈接,在這個鏈接上發送請求,而後接收請求。這樣的模式有一個很大的優勢就是,它很簡單,很容易理解和編程實現;它也有一個很大的缺點就是,它效率很低,所以Keep-Alive被提出用來解決效率低的問題。
Keep-Alive功能使客戶端到服務器端的鏈接持續有效,當出現對服務器的後繼請求時,Keep-Alive功能避免了創建或者從新創建鏈接。市場上 的大部分Web服務器,包括iPlanet、IIS和Apache,都支持HTTP Keep-Alive。對於提供靜態內容的網站來講,這個功能一般頗有用。可是,對於負擔較重的網站來講,這裏存在另一個問題:雖然爲客戶保留打開的連 接有必定的好處,但它一樣影響了性能,由於在處理暫停期間,原本能夠釋放的資源仍舊被佔用。當Web服務器和應用服務器在同一臺機器上運行時,Keep- Alive功能對資源利用的影響尤爲突出。 此功能爲HTTP 1.1預設的功能,HTTP 1.0加上Keep-Aliveheader也能夠提供HTTP的持續做用功能。
Keep-Alive: timeout=5, max=100
timeout:過時時間5秒(對應httpd.conf裏的參數是:KeepAliveTimeout),max是最多一百次請求,強制斷掉鏈接
就是在timeout時間內又有新的鏈接過來,同時max會自動減1,直到爲0,強制斷掉。
咱們知道HTTP協議採用「請求-應答」模式,當使用普通模式,即非KeepAlive模式時,每一個請求/應答客戶和服務器都要新建一個鏈接,完成以後當即斷開鏈接(HTTP協議爲無鏈接的協議);當使用Keep-Alive模式(又稱持久鏈接、鏈接重用)時,Keep-Alive功能使客戶端到服務器端的鏈接持續有效,當出現對服務器的後繼請求時,Keep-Alive功能避免了創建或者從新創建鏈接。
http 1.0中默認是關閉的,須要在http頭加入"Connection: Keep-Alive",才能啓用Keep-Alive;http 1.1中默認啓用Keep-Alive,若是加入"Connection: close ",才關閉。目前大部分瀏覽器都是用http1.1協議,也就是說默認都會發起Keep-Alive的鏈接請求了,因此是否能完成一個完整的Keep-Alive鏈接就看服務器設置狀況。