一個(gè)WEB站點(diǎn)每天可能要接收到上百萬的用戶請求,為了提高系統(tǒng)的效
率,HTTP
1.0規(guī)定瀏覽器與服務(wù)器只保持短暫的連接,瀏覽器的每次請求都需要與服務(wù)器建立一個(gè)TCP連接,服務(wù)器完成請求處理后立即斷開TCP連接,服務(wù)器不跟蹤
每個(gè)客戶也不記錄過去的請求。但是,這也造成了一些性能上的缺陷,例如,一個(gè)包含有許多圖像的網(wǎng)頁文件中并沒有包含真正的圖像數(shù)據(jù)內(nèi)容,而只是指明了這些圖像的URL地址,當(dāng)WEB瀏覽器訪問這個(gè)網(wǎng)頁文件時(shí),瀏覽器首先要發(fā)出針對該網(wǎng)頁文件的請求,當(dāng)瀏覽器解析WEB服務(wù)器返回的該網(wǎng)頁文檔中的HTML內(nèi)容時(shí),發(fā)現(xiàn)其中的img圖像標(biāo)簽后,瀏覽器將根據(jù)img標(biāo)簽中的src屬性所指定的URL地址再次向服務(wù)器發(fā)出下載圖像數(shù)據(jù)的請求,如圖3.3所示。
圖3.3
顯然,訪問一個(gè)包含有許多圖像的網(wǎng)頁文件的整個(gè)過程包含了多次請求和響應(yīng),每次請求和響應(yīng)都需要建立一個(gè)單獨(dú)的連接,每次連接只是傳輸一個(gè)文檔和
圖像,上一次和下一次請求完全分離。即使圖像文件都很小,但是客戶端和服務(wù)器端每次建立和關(guān)閉連接卻是一個(gè)相對比較費(fèi)時(shí)的過程,并且會嚴(yán)重影響客戶機(jī)和服
務(wù)器的性能。當(dāng)一個(gè)網(wǎng)頁文件中包含Applet,JavaScript文件,CSS文件等內(nèi)容時(shí),也會出現(xiàn)類似上述的情況。
為了克服HTTP 1.0的這個(gè)缺陷,HTTP
1.1支持持久連接,在一個(gè)TCP連接上可以傳送多個(gè)HTTP請求和響應(yīng),減少了建立和關(guān)閉連接的消耗和延遲。一個(gè)包含有許多圖像的網(wǎng)頁文件的多個(gè)請求和
應(yīng)答可以在一個(gè)連接中傳輸,但每個(gè)單獨(dú)的網(wǎng)頁文件的請求和應(yīng)答仍然需要使用各自的連接。HTTP
1.1還允許客戶端不用等待上一次請求結(jié)果返回,就可以發(fā)出下一次請求,但服務(wù)器端必須按照接收到客戶端請求的先后順序依次回送響應(yīng)結(jié)果,以保證客戶端能
夠區(qū)分出每次請求的響應(yīng)內(nèi)容,這樣也顯著地減少了整個(gè)下載過程所需要的時(shí)間?;贖TTP
1.1協(xié)議的客戶機(jī)與服務(wù)器的信息交換過程,如圖3.4所示。
圖3.4
可見,HTTP 1.1在繼承了HTTP 1.0優(yōu)點(diǎn)的基礎(chǔ)上,也克服了HTTP 1.0的性能問題。不僅如此,HTTP 1.1還通過增加更多的請求頭和響應(yīng)頭來改進(jìn)和擴(kuò)充HTTP 1.0的功能。
例如,由于HTTP
1.0不支持Host請求頭字段,WEB瀏覽器無法使用主機(jī)頭名來明確表示要訪問服務(wù)器上的哪個(gè)WEB站點(diǎn),這樣就無法使用WEB服務(wù)器在同一個(gè)IP地址
和端口號上配置多個(gè)虛擬WEB站點(diǎn)。在HTTP
1.1中增加Host請求頭字段后,WEB瀏覽器可以使用主機(jī)頭名來明確表示要訪問服務(wù)器上的哪個(gè)WEB站點(diǎn),這才實(shí)現(xiàn)了在一臺WEB服務(wù)器上可以在同一
個(gè)IP地址和端口號上使用不同的主機(jī)名來創(chuàng)建多個(gè)虛擬WEB站點(diǎn)。HTTP
1.1的持續(xù)連接,也需要增加新的請求頭來幫助實(shí)現(xiàn),例如,Connection請求頭的值為Keep-Alive時(shí),客戶端通知服務(wù)器返回本次請求結(jié)果
后保持連接;Connection請求頭的值為close時(shí),客戶端通知服務(wù)器返回本次請求結(jié)果后關(guān)閉連接。HTTP 1.1還提供了與身份認(rèn)證、狀態(tài)管理和Cache緩存等機(jī)制相關(guān)的請求頭和響應(yīng)頭。