http中和快取相關的header

weixin_34127717發表於2018-04-18

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的快取將忽略ExpiresCache-Control

Expires

Expires欄位宣告瞭一個網頁或URL地址不再被瀏覽器快取的時間,一旦超過了這個時間,瀏覽器都應該聯絡原始伺服器。

Cache-Control

Cache-Control欄位中可以宣告多些元素,例如no-cache, must-revalidate, max-age=600(檔案被使用者訪問後的存活時間)等。這些元素用來指明頁面被快取最大時限,如何被快取的,如何被轉換到另一個不同的媒介,以及如何被存放在持久媒介中的。

Last-Modified

Last-ModifiedETag是條件請求(Conditional Request)相關的兩個欄位。如果一個快取收到了針對一個頁面的請求,它傳送一個驗證請求詢問伺服器頁面是否已經更改,在HTTP頭裡面帶上ETagIf Modify Since。伺服器根據這些資訊判斷是否有更新資訊,如果沒有,就返回HTTP 304(NotModify);如果有更新,返回HTTP 200和更新的頁面內容,並且攜帶新的ETagLastModified

ETag

既然有了Last-Modified,為什麼還要用ETag欄位呢?因為如果在一秒鐘之內對一個檔案進行兩次更改,Last-Modified就會不正確。因此,HTTP/1.1利用Entity Tag頭提供了更加嚴格的驗證。

相關文章