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