1. 程式人生 > 其它 >HTTP快取欄位總結

HTTP快取欄位總結

HTTP控制快取的欄位主要包括Cache-Control/Pragma,Expires,Last-Modified/Etag

1、Cache-Control/Pragma

    這個HTTP Head欄位用於指定所有快取機制在整個請求/響應鏈中必須服從的指令,如果知道該頁面是否為快取,不僅可以控制瀏覽器,還可以控制和HTTP相關的快取或代理伺服器。它可以指定下列可選值:
    1、Public:所有內容都將被快取,在響應頭中設定
    2、Private:內容只快取在私有快取中,在響應頭中設定
    3、no-cache:所有內容都不會被快取,在請求頭和響應頭中設定
    4、no-store:所有內容都不會被快取在快取或Internet臨時檔案中,在響應頭中設定
    5、must-revalidation/proxy-revalidation:如果快取的內容失效,請求必須傳送到服務  器/代理以進行重新驗證,在請求頭中設定
    6、max-age=xxx:快取的內容將在xxx秒後失效,這個選項只在HTTP1.1中可用,和Last-Modified一起使用時優先順序較高,在響應頭中設定

    Cache-Control請求欄位可以被個瀏覽器很好的支援,而且優先順序也比較高,它和其他一些請求欄位(如Expires)同時使用時,Cache-Control會覆蓋其他欄位

    Pragma欄位的作用和Cache-Control類似,最常用的Pragma:no-cache,他和Cache-cache的作用是一致的。

2、Expires

    Expires通常的使用格式是Expires:Sat,25 Feb 2012 12:22:17 GMT,後面跟著一個日期和時間,超過這個時間後,快取的內容將失效,瀏覽器在傳送請求之前檢查這個頁面的欄位,看該頁面是否已經過期了,如果過期,就向服務端重新發起請求。

3、Last-Modified/Etag

    Last-Modified欄位一般用於表示一個伺服器上的資源的最後修改時間,資源可以是靜態資源,也可以是動態內容,通過這個最後修改時間可以判斷當前請求的資源是否是最新的。
    一般服務端會在響應頭中返回一個Last-Modified欄位,告訴瀏覽器這個頁面的最後修改時間,如Last-Modified:Sat, 25 Feb 2012 12:55:04 GMT
瀏覽器再次請求時在請求頭中增加If-Modified-Since:Sat, 25 Feb 2012 12:55:04 GMT欄位,詢問當前快取的頁面是否是最新。如果是最新的就返回304,告訴瀏覽器是最新的,伺服器也不會傳輸最新的資料 Etag欄位的作用和LastModified欄位作用相同,這個欄位的作用是讓服務端給每個頁面分配一個唯一的編號,然後通過這個編號來區分當前頁面是否最新。這種方式比較靈活,但是當後端的伺服器有多臺時比較難以處理。