web緩存
一個web緩存又稱爲代理服務器,是一個網絡實體,它有自己的磁盤存儲,保存着最近請求的對象。
瀏覽器可以被配置爲將請求第一次發到web緩存,下面是訪問緩存的步驟(www.baidu.com):
- 瀏覽器與web緩存建立一個TCP連接,將http請求報文發給web緩存
- web緩存檢查本地是否有請求對象的副本,如果有,就將它包含在http響應報文中發給瀏覽器
- 如果web緩存中沒有請求的對象,那麼web緩存就與原始服務器(www.baidu.com)之間打開一個TCP連接,緩存向原始服務器發送http請求,原始服務器將請求內容放在http響應報文中,發給緩存
- 當web緩存收到響應後,將它保存在本地存儲中,並且向客戶瀏覽器發送一個響應報文(通過之前建立的TCP連接)
可以看出web緩存既是客戶端又是服務器,一般web緩存是被ISP安裝的,比如一所大學可能安裝一臺代理服務器,並將校園裏所有的主機瀏覽器配置成指向它。
代理服務器被部署在網絡中有兩個原因:
- 代理服務器可以大幅減少客戶端請求的響應時間
- 代理服務器可以大幅減少一個機構接入因特網的流量,進而可以減少整個因特網的流量
通過使用內容分佈式網絡(Content Distribution Networks),web緩存在當今互聯網中扮演着越來越重要的作用
條件GET
雖然代理服務器可以減少用戶感知的響應時間,但是它也有一個問題:保存在代理服務器中的對象副本可能是過期的,因爲原始服務器中的對象可能被修改了。因此就需要有一種機制可以保證代理中的對象是更新過的,這種機制就是條件GET(代理向原始服務器發送)。
條件GET有兩個要素:
- 請求報文使用GET方法
- 請求報文包含有
If-Modified-Since
頭部行