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
Expires
欄位宣告瞭一個網頁或URL地址不再被瀏覽器快取的時間,一旦超過了這個時間,瀏覽器都應該聯絡原始伺服器。
Cache-Control
Cache-Control
欄位中可以宣告多些元素,例如no-cache, must-revalidate, max-age=600(檔案被使用者訪問後的存活時間)等。這些元素用來指明頁面被快取最大時限,如何被快取的,如何被轉換到另一個不同的媒介,以及如何被存放在持久媒介中的。
Last-Modified
Last-Modified
和ETag
是條件請求(Conditional Request)相關的兩個欄位。如果一個快取收到了針對一個頁面的請求,它傳送一個驗證請求詢問伺服器頁面是否已經更改,在HTTP頭裡面帶上ETag
和If Modify Since
。伺服器根據這些資訊判斷是否有更新資訊,如果沒有,就返回HTTP 304(NotModify);如果有更新,返回HTTP 200和更新的頁面內容,並且攜帶新的ETag
和LastModified
。
ETag
既然有了Last-Modified
,為什麼還要用ETag
欄位呢?因為如果在一秒鐘之內對一個檔案進行兩次更改,Last-Modified就會不正確。因此,HTTP/1.1利用Entity Tag
頭提供了更加嚴格的驗證。