前端性能優化-keep-alive


什么是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方式的連接。

image

沒開啟Keep-Alive時的返回頭信息:Connection:close

image

 

 

開啟Keep-Alive時的返回頭信息:Connection:Keep-Alive

image

Apache如何開啟Keep-Alive模式

以Apache2.4的windows版為例,在httpd.conf中增加如下代碼

# 配置KeepAlive
KeepAlive On #開關
MaxKeepAliveRequests 100 #最大請求數
KeepAliveTimeout 5 #超時時間

如果關閉,則把On改成Off即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM