HTTP協議之響應頭Date與Age

    HTTP沒有爲用戶提供一種手段來區分響應是緩存命中的,仍是訪問原始server獲得的。

client有一種方法能推斷響應是否來自緩存。就是使用Date首部。jquery

將響應中Date首部的值與當前時間進行比較。假設響應中的日期值比較早。client一般就可以以爲是來自緩存的;client也可以經過Age首部來檢測緩存的響應。經過這個首部可以分辨出這條響應的使用期。不然,則以爲是來自原始server中的。緩存

    Date:Date頭域表示消息發送的時間,緩存在評估響應的新奇度時要用到,時間的描寫敘述格式由RFC822定義。好比。Date: Thu, 11 Jul 2015 15:33:24 GMT。spa

    Age:當代理server用本身緩存的實體去響應請求時,用該頭部代表該實體從產生到現在通過多長時間了。代理

下面以請求百度爲例,get http://www.baidu.com/,返回200。響應Date從下圖可以看到。


再看還有一個靜態資源請求,get http://s1.bdstatic.com/r/www/cache/static/jquery/jquery-1.10.2.min_f2fb5194.js。HTTP響應碼爲304,Date和Age在下圖中可以看到。Date與主請求http://www.baidu.com/一致,未命中代理緩存server(緩存server拿DATE去原始server進行緩存新奇度檢查,304表示server對象未改動,緩存再驗證命中,緩存僅僅需更新新的首部,假設新奇度檢測未命中。則返回200),因此。實際上該資源是從原始server中得到。server

假設該請求Date比當前時間要早,並且假設Date+Age(秒)與主請求http://www.baidu.com/中的Date一致,那麼可以以爲從代理緩存server中獲取資源,緩存命中。對象

相關文章
相關標籤/搜索