HTTP/1.1協議中和網頁緩存相關的字段:瀏覽器
header | 解釋 | 例子 |
---|---|---|
Expires | 響應過時的日期和時間 | Expires: Thu, 01 Dec 2010 16:00:00 GMT |
Cache-Control | 告訴全部的緩存機制是否能夠緩存及哪一種類型 | Cache-Control: no-cache |
Last-Modified | 請求資源的最後修改時間 | Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT |
ETag | 請求變量的實體標籤的當前值 | ETag: 「737060cd8c284d8af7ad3082f209582d」 |
HTTP/1.0協議中有一個功能比較弱的緩存控制機制:Pragma,使用HTTP/1.0的緩存將忽略Expires
和Cache-Control
。緩存
Expires
字段聲明瞭一個網頁或URL地址再也不被瀏覽器緩存的時間,一旦超過了這個時間,瀏覽器都應該聯繫原始服務器。服務器
Cache-Control
字段中能夠聲明多些元素,例如no-cache, must-revalidate, max-age=600(文件被用戶訪問後的存活時間)等。這些元素用來指明頁面被緩存最大時限,如何被緩存的,如何被轉換到另外一個不一樣的媒介,以及如何被存放在持久媒介中的。code
Last-Modified
和ETag
是條件請求(Conditional Request)相關的兩個字段。若是一個緩存收到了針對一個頁面的請求,它發送一個驗證請求詢問服務器頁面是否已經更改,在HTTP頭裏面帶上ETag
和If Modify Since
。服務器根據這些信息判斷是否有更新信息,若是沒有,就返回HTTP 304(NotModify);若是有更新,返回HTTP 200和更新的頁面內容,而且攜帶新的ETag
和LastModified
。資源
既然有了Last-Modified
,爲何還要用ETag
字段呢?由於若是在一秒鐘以內對一個文件進行兩次更改,Last-Modified就會不正確。所以,HTTP/1.1利用Entity Tag
頭提供了更加嚴格的驗證。it