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