HTTP 中的快取功能

當資源需要傳輸時,快取是一種可以加快網絡連接速度的技術,因為傳輸的東西越少,效果就越好。 許多資源可能非常龐大,從時間和實際成本(例如在移動設備上)的角度來看都非常昂貴。 HTTP 提供了不同的快取策略,並由瀏覽器使用。 無快取 Expires 首部 條件式 GET 使用 If-Modified-Since 和 Last-Modified 使用 If-None-Match 和 ETag 無快取 首先,Cache-Control 首部可以告訴瀏覽器在檢查 ETag 值(稍後詳述)之前,永遠不要使用快取的資源,如下所示: Cache-Control: no-cache 更嚴格的 no-store 選項告訴瀏覽器(以及所有中介網路設備)不要將資源存儲在其快取中: Cache-Control: no-store 如果 Cache-Control 中含有 max-age 值,則此值用於確定該資源作為快取的有效時間(單位為秒): Cache-Control: max-age=3600 Expires 首部 當發送 HTTP 請求時,瀏覽器會檢查其快取中是否有該頁面的副本,基於所請求的 URL。 如果有,則檢查該頁面的新鮮度。 如果HTTP 回應 Expires 首部(/http-response-headers/#expires)值小於當前日期和時間,則該頁面被認為是新鮮的。 Expires 首部的格式如下: Expires: Sat, 01 Dec 2018 16:00:00 GMT 條件式 GET 有不同的條件式 GET 方法。它們都基於使用 If-* 請求頭: 使用 If-Modified-Since 和 Last-Modified 使用 If-None-Match 和 ETag 使用 If-Modified-Since 和 Last-Modified 瀏覽器可以發送帶有 If-Modified-Since 首部的請求到服務器,該頭部基於當前快取頁面中獲取的 Last-Modified 首部值。...