默認狀況下,HTTP連接一般在請求完成以後關閉。這意味着服務端在完成響應的交付以後便關閉了TCP連接。爲了讓連接保持打開,來知足多請求,可使用keep-alive 頭信息。css
建立多個連接可能會下降加載速度,同時也會利用服務器更多資源。咱們能夠經過啓用Keep-Alive來克服這個問題,經過單個連接來傳遞這些文件,如此就避免了重複的建立和關閉新鏈接。若是沒有啓用Keep-Alive,展現一個網頁的過程可能須要至關長的時間。html
Keep-Alive的啓用是經過在HTTP 頭信息中明確聲明來完成的。以apache web server爲例,若是你有權限訪問Apache的配置文件(httpd.conf),你能夠在這裏打開keep-alive。配置方法見下文。web
使用「KeepAlive On」來啓用,使用「KeepAlive Off」來禁用。開啓以後的響應頭大概以下:redis
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
Date: Thu, 15 Jan 2017 16:45:29 GMT
Content-Length: 1845
Keep-Alive: timeout=10, max=20
Server: Apache/2.4.9 (Unix) PHP/5.6.2spring
用來設置KeepAlive連接的最大數量。合適的值取決於實際的狀況。apache
這個設置能夠防止未使用的連接佔用太長久。其實就是連接須要keep多久的問題。好比設置7到10秒一般就能夠了。在流量較高的狀況下這個值可能就得設置大一點了,以確保沒有頻繁的TCP連接從新啓動。若是這個值設置過小了,那麼也許就是去了keep-alive自己的目的了。瀏覽器
若是你使用的是HTTP/1.1,它的實現方式與HTTP/1.0的keek-live不一樣,HTTP/1.1的連接默認是保持活躍的,它假定全部的連接都是持久的,除非響應頭中包含:「Connection:close」頭。可是若是不發送「Connection:close」頭並不意味着連接會永遠持續,連接仍是會被關閉的。服務器
spring如何啓動的?這裏結合spring源碼描述了啓動過程
SpringMVC是怎麼工做的,SpringMVC的工做原理
spring 異常處理。結合spring源碼分析400異常處理流程及解決方法
Mybatis Mapper接口是如何找到實現類的-源碼分析