HTTP協議之響應頭Date與Age


HTTP沒有為用戶提供一種手段來區分響應是緩存命中的,還是訪問原始服務器得到的。客戶端有一種方法能判斷響應是否來自緩存,就是使用Date首部。將響應中Date首部的值與當前時間進行比較,如果響應中的日期值比較早,客戶端通常就可以認為是來自緩存的;客戶端也可以通過Age首部來檢測緩存的響應,通過這個首部可以分辨出這條響應的使用期。否則,則認為是來自原始服務器中的。

 

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

 

    Age:當代理服務器用自己緩存的實體去響應請求時,用該頭部表明該實體從產生到現在經過多長時間了。

以下以請求百度為例,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/一致,未命中代理緩存服務器(緩存服務器拿DATE去原始服務器進行緩存新鮮度檢查,304表示服務器對象未修改,緩存再驗證命中,緩存只需更新新的首部,如果新鮮度檢測未命中,則返回200),所以,實際上該資源是從原始服務器中獲得。

假設該請求Date比當前時間要早,並且如果Date+Age(秒)與主請求http://www.baidu.com/中的Date一致,那么可以認為從代理緩存服務器中獲取資源,緩存命中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM