首頁 web前端 js教程 HTTP協定中的並發限制及隊首阻塞問題

HTTP協定中的並發限制及隊首阻塞問題

Sep 10, 2018 pm 05:21 PM
http協議

串行連線

HTTP/0.9 和早期的 HTTP/1.0 協定對 HTTP 請求處理是串行化的。假如一個頁麵包含 3 個樣式文件,同屬於一個協定、網域名稱、連接埠。那麼,瀏覽器一共需要發起四次請求,並且每次只能打開一個 TCP 通道,在一個請求資源完成下載後,立刻斷開該連接,再開啟一個新的連接去處理隊列中的下一個請求。隨著頁面資源大小、數量的不斷擴增,網路延遲時間會不斷堆積,使用者會面對滿屏空白,等待過長時間而失去耐心。

HTTP協定中的並發限制及隊首阻塞問題

並行連接

為了提高網路的吞吐能力,改進後的HTTP 協定允許客戶端同時開啟多個TCP 連接,並行地請求多個資源,充分利用頻寬。通常,每一個連線之間都會有一定延遲,但請求的傳輸時間是重疊的,整體延遲要比串列連線低很多。考慮到每一個連線都會消耗系統資源,且伺服器需要處理大量的使用者並發請求,瀏覽器會對並發請求數量做一定的限制。即使RFC 並沒有規定特定的限制數量,各瀏覽器廠商也會有自己的標準:

IE 7: 2
IE 8/9: 6
IE 10: 8
IE 11: 13
Firefox: 6
Chrome: 6
Safari: 6
Opera: 6
iOS WebView: 6
Android WebView: 6

HTTP協定中的並發限制及隊首阻塞問題

持久連接(長連接)

早期的HTTP 協定對每個請求都佔用一個獨立的TCP 連接,這無疑增加了TCP 的建立連接開銷、擁塞控制開銷、釋放連線開銷,改進後的HTTP/1.0 和HTTP/1.1(預設)都支援了持久連線。如果一個請求完成後,不會立刻斷開連接,而是在一定的時間內保持連接,以便快速處理即將到來的 HTTP 請求,復用同一個 TCP 通道,直到客戶端心跳檢測失敗或伺服器連接逾時。這個特性可以透過 HTTP 首部 Connection: keep-alive 來激活,客戶端也可以傳送 Connection: close 來主動關閉連線。所以,我們看到,並行連接和持久連接這兩種優化是相輔相成的,並行連接使得首次加載頁面可以同時打開多個TCP 連接,而持久連接保證了後續的請求復用已打開的TCP 連接,這也是現代Web 頁面的普遍機制。

HTTP協定中的並發限制及隊首阻塞問題

管道化連線

#持久連線讓我們可以重複使用連線來完成多次要求,但它必須滿足FIFO 的佇列順序,必須確保前一個請求成功到達伺服器、處理成功並且收到伺服器傳回的首個位元組,才可以發起佇列中下一個請求。 HTTP 管道允許客戶端在同一個 TCP 通道內連續發起多個請求,而不必等待回應,消除了往返延遲時間差。但現實情況由於 HTTP/1.x 協定的限制,不允許資料在一個鏈路上交錯到達(IO 多路復用)。設想一種情況,客戶端伺服器端同時發送一個HTML 和多個CSS 請求,伺服器並行處理所有請求,當所有的CSS 請求處理完成並加入到緩衝隊列,卻發現HTML 請求處理遇到問題而無限被掛起,嚴重時甚至造成緩衝區溢出,這種情況就叫做隊首阻塞。因此,這個方案在 HTTP/1.x 協定中並沒有被採納。

HTTP協定中的並發限制及隊首阻塞問題隊首阻塞並不是HTTP 中獨有的概念,而是在快取式通訊網路交換中的一種普遍現象

總結

#1、對於同一個協定、網域、端口,瀏覽器允許同時開啟個TCP 連接,一般上限為6 個。
2、同一個 TCP 連線允許發起多次 HTTP 請求,但必須等待前一個請求的首個位元組回應到達客戶端。
3、由於隊首阻塞問題,不允許客戶端同時發送佇列中所有請求,這個問題在 HTTP/2.0 得已解決。

以上是HTTP協定中的並發限制及隊首阻塞問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

深入探討HTTP協定狀態碼的重要性 深入探討HTTP協定狀態碼的重要性 Feb 25, 2024 pm 11:06 PM

深入解讀HTTP協定狀態碼:為什麼狀態碼對於網站開發至關重要隨著網路的快速發展,網站開發變得越來越重要。在網站開發中,HTTP協定扮演著至關重要的角色。它定義了瀏覽器和伺服器之間的通訊規範,透過請求和回應來傳輸資料。而HTTP狀態碼就是在這個過程中的一部分,用來表示請求的處理情況。本文將深入解讀HTTP協定狀態碼的作用與意義。 HTTP狀態碼是一個三位數的數

PHP入門指南:HTTP協定 PHP入門指南:HTTP協定 May 22, 2023 am 08:06 AM

PHP是一種在網路上應用廣泛的程式語言,而HTTP協定是支撐網際網路的重要協定。對於初學者而言,學習HTTP協定是入門PHP程式設計的重要一步。本文將從HTTP協議的基本概念、請求方法、狀態碼和實際應用等方面介紹HTTP協議的具體內容,以幫助初學者更好地理解和掌握HTTP協議,從而更有效地開發PHP應用程式。 HTTP協定的基本概念HTTP協定是HyperText

作用解析:HTTP協定訊息頭 作用解析:HTTP協定訊息頭 Feb 25, 2024 am 11:06 AM

HTTP協定是現代互聯網中最常用的應用層協定之一,它基於客戶端-伺服器模型,用於在客戶端和伺服器之間傳輸資料。 HTTP協定透過請求和回應的方式來進行通信,而訊息頭是HTTP協定中非常重要的一部分,它用於在請求和回應中傳遞元資料。本文將探討HTTP協定訊息頭的作用。首先,HTTP協定訊息標頭可以用來傳遞請求的相關資訊。當客戶端向伺服器發送請求時,訊息標頭中的字段

詳細解讀Nginx反向代理伺服器的HTTP協定支援與效能最佳化 詳細解讀Nginx反向代理伺服器的HTTP協定支援與效能最佳化 Aug 04, 2023 pm 01:20 PM

Nginx反向代理伺服器是一種功能強大的Web伺服器,它不僅可以處理HTTP請求和回應,還能提供HTTP協定支援和效能最佳化。在本文中,我們將詳細解讀Nginx反向代理伺服器的HTTP協定支援和效能最佳化,並提供一些程式碼範例。一、HTTP協定支援請求處理Nginx反向代理伺服器可以接收來自客戶端的HTTP請求,並將其轉送給後端伺服器。對於每個請求,Nginx會進

Workerman開發:如何實作基於HTTP協定的Web伺服器 Workerman開發:如何實作基於HTTP協定的Web伺服器 Nov 07, 2023 am 10:51 AM

Workerman開發:如何實現基於HTTP協定的Web伺服器,需要具體程式碼範例引言:隨著網際網路的快速發展,Web開發變得越來越重要。而提供Web服務的基礎就是Web伺服器。 Workerman是高效能的PHP開發框架,不僅可用於開發網路通訊伺服器,還可實現基於HTTP協定的Web伺服器。本文將介紹利用Workerman開發一個簡單的HTTPWeb服

Workerman開發:如何實作基於HTTP協定的批次文件處理系統 Workerman開發:如何實作基於HTTP協定的批次文件處理系統 Nov 07, 2023 pm 12:16 PM

Workerman開發:如何實現基於HTTP協定的大量文件處理系統,需要具體程式碼範例隨著互聯網和數位化技術的發展,資料處理變得越來越重要,尤其在企業中。有時候,我們需要處理大量的文件,例如圖片、影片、音訊等等。這時候,如果手工操作,不僅費時費力,而且易出錯。如何實現批次文件處理系統就是本文要探討的議題。 Workerman是一個PHP開發的高效能的socket

PHP中的HTTP協定和狀態碼 PHP中的HTTP協定和狀態碼 May 11, 2023 pm 04:28 PM

PHP是一種廣泛使用的伺服器端腳本語言,用來建立Web應用程式。在Web應用程式中,HTTP協定和狀態碼是必需的基礎知識,在本文中我們將探討PHP中HTTP協定和狀態碼的基礎知識。 HTTP協議是用於傳輸超文本的協議,在Web開發中被廣泛使用。透過HTTP協議,網頁瀏覽器和網頁伺服器之間透過網際網路進行交互,網頁瀏覽器向網頁伺服器傳送HTTP請求,W

403狀態碼分析:應對HTTP錯誤中的禁止存取狀況 403狀態碼分析:應對HTTP錯誤中的禁止存取狀況 Feb 18, 2024 pm 05:44 PM

403狀態碼解析:如何應對HTTP協定中的禁止存取錯誤引言:在網路世界中,當我們瀏覽網頁或傳送請求時,常常會遇到各種各樣的錯誤。其中之一就是403狀態碼,表示禁止存取錯誤。本文將對403錯誤進行解析,並提供一些因應策略,幫助讀者更好地處理這類問題。一、403狀態碼的意義與原因403狀態碼是HTTP協定中的一個客戶端錯誤狀態碼,它表示伺服器瞭解客戶端的請求,但

See all articles