如果我的瀏覽器使用緩存(本地緩存),它是否保證它發送的每個HTTP請求都包含「IF MODIFIED SINCE」標題行?如果修改以來 - HTTP協議
如果不是,我該如何定義它?以及如果我爲瀏覽器定義代理服務器會怎麼樣?它會自動添加它嗎?
在此先感謝
如果我的瀏覽器使用緩存(本地緩存),它是否保證它發送的每個HTTP請求都包含「IF MODIFIED SINCE」標題行?如果修改以來 - HTTP協議
如果不是,我該如何定義它?以及如果我爲瀏覽器定義代理服務器會怎麼樣?它會自動添加它嗎?
在此先感謝
我只是在做這個與我的RESTful Web服務和運行特定資源的幾個測試。首先我是想通過對資源的HTTP響應設置以下的HTTP標頭控制從我的Web服務器,瀏覽器緩存:
Cache-Control: must-revalidate, max-age=30
Last-Modified: Mon May 19 11:21:05 GMT 2014
Expires: Mon May 19 11:51:05 GMT 2014
從Web UI
然後,我有每5一個計時器,定期(秒)在我說過的資源上執行GET可以緩存。由於瀏覽器緩存中的資源尚未過期,因此資源的GET請求將從瀏覽器緩存中提供,但是,一旦「max-age」過期,下一個GET請求會發送到服務器,並且瀏覽器將添加「If - 修改 - 自從「標題與」最後修改「日期爲這樣的值:
[GET] - /cms_cm_web/api/notification
referer: http://localhost:8080/cms_ui/#/
accept: application/json, text/plain, */*
accept-language: en-us
ua-cpu: AMD64
accept-encoding: gzip, deflate
user-agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
host: localhost:8080
if-modified-since: Mon, May 19 11:21:05 GMT 2014
connection: Keep-Alive
這是來自IE9瀏覽器。我也從最新的Firefox和Chrome瀏覽器獲得相同的結果。 從這裏服務器可以查找「If-Modified-Since」頭,如果它確定資源沒有被修改,那麼它將返回一個304 Not Modified響應,否則它將返回具有200 OK響應的資源表示。
因此根據HTTP規範,您可以使用「Expires」和/或「Cache-Control」標頭以及「Last-Modified」標頭控制緩存。這將導致瀏覽器緩存執行所謂的「條件GET」請求,因爲它包含「If-Modified-Since」頭。