"Cache-Control"
- 12.1 HTTP 回應的保存位置:私有快取與共用快取
HTTP 回應離開 origin 之後可能被保存的位置:私有快取與共用快取的規範定義、瀏覽器、CDN、反向代理與轉送代理各由誰經營、規範列出的保存條件、只對共用快取或只對私有快取有效的指令,以及把指令指定給 CDN 的 CDN-Cache-Control
- 12.2 新鮮度期限的計算:max-age、s-maxage、Expires 與啟發式期限
快取在不詢問 origin 的情況下可以直接使用一份副本多久:新鮮度期限的取用順序、Age 標頭與副本年齡的計算、沒有明確期限時規範允許的啟發式期限,以及 Chromium、Firefox、Varnish、nginx 在啟發式期限上的差異
- 12.3 過期副本的驗證:條件請求、304 回應、no-cache 與 no-store
副本過期之後快取怎麼向 origin 確認它是否仍然有效:ETag 與 Last-Modified 兩種驗證子、條件請求與 304 回應、no-cache、no-store 與 must-revalidate 的語意差別,以及共用快取實作在驗證上的預設行為
- 12.4 快取鍵與副本共用:Vary、Cookie 與 Authorization
快取用什麼條件挑出一份副本回應請求:快取鍵的組成、Vary 如何把請求標頭加進快取鍵、帶 Authorization 的請求在共用快取的規則、Cookie 與 Set-Cookie 在規範與實作上的處理,個人化回應的標頭選擇,以及沒有列進快取鍵的輸入造成的快取投毒與快取規則造成的 web cache deception
- 12.5 已保存副本的更新方式:失效、purge、版本化網址與等待到期
origin 想改變已經被快取保存的副本時可用的手段:規範定義的失效、CDN 與反向代理提供的 purge、換網址的版本化做法與 immutable、只作用於瀏覽器的 Clear-Site-Data,以及每一種手段能傳到哪幾種快取
- 12.6 過期副本的延用:stale-while-revalidate 與 stale-if-error
快取在什麼條件下可以給出已經過期的副本:規範對過期副本的預設禁止、RFC 5861 的 stale-while-revalidate 與 stale-if-error 兩個擴充指令的語意與窗口,以及 Varnish、nginx 與瀏覽器在支援上的差異
- 12.8 快取設定的應用:轉址、需登入的 API 回應與個人化頁面
把 HTTP 快取的保存位置、新鮮度、驗證、快取鍵與更新規則用在具體回應上:永久與暫時轉址的狀態碼與快取標頭、需登入的 API 回應、個人化頁面、靜態資源與引用它的頁面,以及檢查實際送出的快取標頭的方法
- Cache-Control(快取控制標頭)
看到回應帶 Cache-Control、或要決定某個回應能被誰保存、保存多久、使用前要不要先問 origin 時,查這個標頭各指令的分工