瀏覽器中的最大並行HTTP連線數是多少?
在本教程中,我們將學習瀏覽器中的最大並行HTTP連線數。
為了更多地瞭解這個主題,我們將首先了解什麼是並行連線、阻塞背後的原因以及如何解決它,以及瀏覽器的限制。
並行連線
透過完全請求原始HTML頁面、第一個嵌入項、第二個嵌入物件等,瀏覽器可以順序地處理每個嵌入物件。但這速度太慢了!HTTP使客戶端能夠建立連線並並行執行多個HTTP事務。
並行連線可以加快頁面載入速度。如果包含嵌入物件的複合頁面使用單個連線的頻寬和緩慢的時間,它們可以載入得更快。如果單個連結沒有耗盡客戶端的網際網路頻寬,則可以重疊延遲,並且可以使用額外的頻寬來載入其他物件。
並行連線看起來可能更快。並行連線並不總是能提高頁面載入速度。但是,即使它們沒有加快頁面傳輸速度,並行連線也經常給使用者留下頁面載入速度更快的印象,因為他們可以看到多個元件物件同時出現在螢幕上時的進度。人們認為,如果螢幕上有很多活動,網頁載入速度會更快,即使秒錶顯示總頁面下載時間更慢。
阻塞
瀏覽器只能並行連線到同一主機這麼多次。因此,最大連線數為60,每個主機的最大連線數根據使用的瀏覽器而異,從2到13不等。這通常被稱為阻塞或停滯,它與瀏覽器中可用的連線數直接相關。現在我們將看到阻塞中提出的一些重要問題。
阻塞是什麼意思?
當檔案必須等待連線開啟才能開始下載到瀏覽器時,這被稱為阻塞。從本質上講,檔案在一個佇列中等待與伺服器的連線開啟,然後才能提供給網站訪問者。
為什麼發生阻塞?
當需要載入的檔案多於開啟的連線數時,就會發生阻塞。一旦頁面的HTML載入,CSS、JavaScript、圖片和其他檔案將開始從伺服器下載,從而允許這些元素顯示在您的瀏覽器中。除非另有說明,否則這些檔案將同步載入,並按照它們在網站程式碼中出現的順序載入。當瀏覽器達到其連線配額時,請求載入的額外檔案必須等到另一個連線可用。
如何防止阻塞?
似乎擁有更多可用的連線會大大提高瀏覽器(和Web)效能,但這樣做可能會給伺服器帶來很大的負擔。如果您的瀏覽器可以支援60個連線而不是6個,則伺服器可能只能管理10%的流量。一些瀏覽器(Opera、IE10、11和12)允許您增加可用連線的數量。但是,除非您對伺服器執行負載測試,否則通常不建議這樣做。增加的連線會對伺服器的效能產生負面影響,也可能被伺服器視為DDoS攻擊。
保持前端和後端之間的平衡對於增強瀏覽體驗和防止阻塞影響網路速度至關重要。您還可以考慮使用Ajax呼叫或非同步檔案載入。甚至檔案載入的順序也由您決定。如果某個影像比您的客戶評論對頁面更有價值,請考慮打包該影像。
瀏覽器連線限制
瀏覽器限制了來自同一域名名的HTTP連線數量。HTTP規範定義了此約束(RFC2616)。當前瀏覽器通常允許每個域六個連線。大多數舊版瀏覽器將連線限制為每個域兩個。
根據HTTP 1.1協議,單使用者客戶端不能維持多於兩個到任何伺服器或代理的連線。瀏覽器限制的目的是為了這個。RFC 2616 - 超文字傳輸協議,第8部分 - 連線包含更多詳細資訊。
這不如現代瀏覽器靈活,現代瀏覽器支援更多連線。RFC沒有提到如何阻止超過限制。連線可能會被關閉,或者它們開啟的能力可能會受到限制。
瀏覽器版本 | 每個主機名的連線數 | 最大連線數 |
---|---|---|
Chrome 34/32 | 6 | 10 |
Internet Explorer 9 | 6 | 35 |
Internet Explorer 10 | 8 | 17 |
Internet Explorer 11 | 13 | 17 |
Firefox 27/26 | 6 | 17 |
Safari 7.0.1 | 6 | 17 |
Android 4 | 6 | 17 |
Chrome Mobile 18 | 6 | 16 |
Internet Explorer Mobile 9 | 6 | 60 |
我們可以使用相同的連線提交多個請求嗎?
HTTP 1.1中的持久連線 HTTP 1.0有一些限制,例如每個連線一個請求的限制。這意味著每個網路請求將形成一個新的連線通道。
由於建立連線需要成本,HTTP 1.1引入了持久連線的概念。(此功能後來也新增到HTTP 1.0中。)
持久連線可以重複使用,並在一段時間內保持開啟狀態,從而無需為每個連線請求進行新的TCP握手。
藉助此功能,我們可以透過相同的連線通道傳送連續的請求。