Last-Modified 是 HttpHeader 中的資源的最後修改時間,若是帶有 Last-Modified ,下一次發送 Http 請求時,將會發生帶 If-modified-since 的 HttpHeader 。若是沒有過時,將會收到 304 的響應,從緩存中讀取。瀏覽器
Etag 是 HttpHeader 中表明資源的標籤,在服務器端生成。若是帶有 Etag ,下一次發送帶 Etag 的請求,若是Etag 沒有變化將收到 304 的響應,從緩存中讀取。緩存
Etag 在使用時要注意相同資源多臺 Web 服務器的 Etag 的一致性。服務器
Expire 是 HttpHeader 中表明資源的過時時間,由服務器段設置。若是帶有 Expire ,則在 Expire 過時前不會發生Http 請求,直接從緩存中讀取。用戶強制 F5 例外。blog
一般 Last-Modified,Etag,Expire 是一塊兒混合使用的,特別是 Last-Modified 和 Expire 常常一塊兒使用,由於 Expire能夠讓瀏覽器徹底不發起 Http 請求,而當瀏覽器強制 F5 的時候又有 Last-Modified ,這樣就很好的達到了瀏覽器段緩存的效果。資源
Etag 和 Expire 一塊兒使用時,先判斷 Expire ,若是已通過期,再發起 Http 請求,若是 Etag 也過時,則返回 200響應。若是 Etag 沒有過時則返回 304 響應。it
Last-Modified,Etag,Expires 三個同時使用時。先判斷 Expire ,而後發送 Http 請求,服務器先判斷 last-modified,再判斷 Etag ,必須都沒有過時,才能返回 304 響應。ast
原文:服務器端
http://coolfiry.iteye.com/blog/1189525請求