什么是Keep-Alive
Keep-Alive是瀏覽器端和服務器端約定的一種提高傳輸效率的協議。我先舉個例子吧,我現在搬家,有10個箱子,如果我自己來搬的話,每次只能帶一個箱子,那么搬到目的地,需要跑十次,而如果我要找一家搬家公司的貨車來,一次就可以把10個箱子搬到目的地。在這個例子中,使用貨車搬家,就相當於使用了Keep-Alive,很顯然效率可以提高很多。大家都知道,建立一次Http鏈接需要三次握手四次斷開,開消非常的大。如果需要傳輸10個JS文件,則需要30次握手和40次斷開,其中非常長的時間都耗在連接斷開上,這顯然是我們不希望看到的,所以就有了Keep-Alive這種方式,我們還是傳輸10個文件,現在只需要建立一次Http鏈接,當10個文件傳輸完成后(如果沒有超出超時時間),服務器會自動斷開連接。
現代瀏覽器默認會在request中加上Connection:keep-alive,表示當前瀏覽器支持keep-alive這種傳輸方式,同時如果在Response有Connection:keep-alive,表明服務器端在傳輸數據的時候,使用的Keep-Alive方式。下圖能直觀的反應出正常的HTTP連接和Keep-Alive方式的連接。
沒開啟Keep-Alive時的返回頭信息:Connection:close
開啟Keep-Alive時的返回頭信息:Connection:Keep-Alive
Apache如何開啟Keep-Alive模式
以Apache2.4的windows版為例,在httpd.conf中增加如下代碼
# 配置KeepAlive
KeepAlive On #開關
MaxKeepAliveRequests 100 #最大請求數
KeepAliveTimeout 5 #超時時間
如果關閉,則把On改成Off即可



