- HTTP 允許用戶端打開多條連接配接,并行地執行多個 HTTP 事務。在下面這個例子中,并行加載了四幅嵌入式圖檔,每個事務都有自己的 TCP 連接配接。嵌入的元件不一定都在同一台 Web 伺服器上,可以同多台伺服器建立并行的連接配接。
1. 并行連接配接可能會提高頁面的加載速度
- 包含嵌入對象的組合頁面如果能通過并行連接配接克服單條連接配接的空載時間和帶寬限制,加載速度也會有所提高。時延可以重疊起來,而且如果單條連接配接沒有充分利用用戶端的網際網路帶寬,可以将未用帶寬配置設定來裝載其他對象。
- 舉例:4個事務,首先裝載的是封閉的 HTML 頁面,然後并行處理其餘的 3 個事務,每個事務都有自己的連接配接。圖檔的裝載是并行的,連接配接的時延也是重疊的。(注:由于軟體開銷的存在,每個連接配接請求之間總是會有一些小的時延,但連接配接請求和傳輸時間基本上都是重疊起來的。)
2. 并行連接配接不一定更快
- 即使并行連接配接的速度可能會更快,但并不一定總是更快。
- 用戶端的網絡帶寬不足時,大部分的時間可能都是用來傳送資料的。一個連接配接到速度較快伺服器上的 HTTP 事務很容易耗盡所有可用帶寬。如果并行加載多個對象,每個對象都會去競争這有限的帶寬,每個對象都會以較慢的速度按比例加載,這樣帶來的性能提升就很小,甚至沒什麼提升。
- 實際上,多條連接配接會産生一些額外的開銷,使用并行連接配接裝載整個頁面所需的時間很可能比串行下載下傳的時間更長。
- 打開大量連接配接會消耗很多記憶體資源,進而引發自身的性能問題,尤其是伺服器在同時處理大量使用者請求時性能會嚴重下降。
- 實際上,浏覽器确實使用了并行連接配接,但它們會将并行連接配接的總數限制為一個較小的值(通常是 4 個)。伺服器可以随意關閉來自特定用戶端的超量連接配接。
3. 并行連接配接可能讓人“感覺”更快一些
- 即使實際上并行連接配接并沒有加快頁面的傳輸速度,通常也會讓使用者覺得頁面加載得更快了,因為多個元件對象同時出現在螢幕上時,使用者能夠看到加載的進展。
- 随着漸進式圖檔應用的逐漸增加,這種效果就更加明顯了。(漸進式圖檔會先顯示低分辨率的近似圖形,然後再逐漸增加圖檔的分辨率。)