Expires
中如:Mon,10 Dec 1990 02:25:22GMT。那麼這個資源在這個時間以前都能使用。那麼有一個問題是:客戶端的時間是能夠被修改的,並且客戶端和服務器時間未必一致。Cache-Control:max-age=300
單位是秒(s)。如今好了300秒內這個資源就不會過時。那麼有一種多是300秒後我再次去服務器拿這個資源發現資源並無被改變過,服務器又再次返回了一樣的資源給我,這樣的話就浪費了一次帶寬。其實能夠返回一條信息給瀏覽器代表緩存資源能夠繼續使用。ETag:W/"e-cbxLFQW5zapn79tQwb/g6Q"
。這個ETag是服務器根據資源計算出的惟一標識,一般配合max-age
使用。當時間過時之後瀏覽器會將標識放在請求頭中的If-None-Match
,服務器收到請求之後會拿請求中的標識與服務器根據資源計算的Etag進行比較,若一致則返回響應頭其中包含狀態碼304。不一致就返回新的資源。可是在分佈式系統中每一個機器生成的ETag不同。Last-Modified
。當資源過時時瀏覽器發現資源有Last-Modified
,而後發請求時便在請求頭增長了一個字段If-Modified-Since
表示發送的請求時間,服務器拿到這個時間與資源的最後修改時間比較,若是修改時間比較新那麼返回新的資源,不然返回Http 304。1.當Expires
與Cache-Control:max-age
同時存在時max-age的優先級高。
2.[Last-Modified,If-Modified-Since]和[ETag、If-None-Match]常常會放在一塊兒使用。瀏覽器