HTTP - 快取



HTTP 通常用於分散式資訊系統,透過使用響應快取可以提高效能。HTTP/1.1 協議包含許多旨在使快取工作的元素。

HTTP/1.1 中快取的目標是在許多情況下無需傳送請求,在許多其他情況下無需傳送完整響應。

HTTP/1.1 中的基本快取機制是對快取的隱式指令,其中伺服器指定過期時間和驗證器。為此,我們使用Cache-Control 頭。

Cache-Control 頭允許客戶端或伺服器在請求或響應中傳輸各種指令。這些指令通常會覆蓋預設的快取演算法。快取指令以逗號分隔的列表指定。例如:

Cache-control: no-cache

客戶端在其 HTTP 請求中可以使用以下快取請求指令:

序號 快取請求指令及說明
1 no-cache

快取不能使用響應來滿足後續請求,除非與原始伺服器成功重新驗證。

2 no-store

快取不應儲存關於客戶端請求或伺服器響應的任何資訊。

3 max-age = 秒

指示客戶端願意接受年齡不超過指定秒數的響應。

4 max-stale [ = 秒 ]

指示客戶端願意接受已超過其過期時間的響應。如果給出了秒數,則其過期時間不能超過該時間。

5 min-fresh = 秒

指示客戶端願意接受新鮮度壽命不小於其當前年齡加上指定秒數的響應。

6 no-transform

不轉換實體主體。

7 only-if-cached

不檢索新資料。快取只有在快取中存在文件時才能傳送文件,並且不應聯絡原始伺服器檢視是否存在更新的副本。

伺服器在其 HTTP 響應中可以使用以下快取響應指令:

序號 快取響應指令及說明
1 public

指示任何快取都可以快取響應。

2 private

指示響應訊息的全部或部分內容僅供單個使用者使用,共享快取不得快取。

3 no-cache

快取不能使用響應來滿足後續請求,除非與原始伺服器成功重新驗證。

4 no-store

快取不應儲存關於客戶端請求或伺服器響應的任何資訊。

5 no-transform

不轉換實體主體。

6 must-revalidate

快取必須在使用過期文件之前驗證其狀態,並且不應使用已過期文件。

7 proxy-revalidate

proxy-revalidate 指令與 must-revalidate 指令含義相同,只是它不適用於非共享使用者代理快取。

8 max-age = 秒

指示客戶端願意接受年齡不超過指定秒數的響應。

9 s-maxage = 秒

此指令指定的最大年齡將覆蓋 max-age 指令或 Expires 頭指定的最大年齡。私有快取始終忽略 s-maxage 指令。

廣告