可快取

可快取的響應是指可以被快取的 HTTP 響應,即可以被儲存以便稍後檢索和使用,從而節省向伺服器發出新的請求。並非所有 HTTP 響應都可以被快取;以下是 HTTP 響應可快取的限制條件:

  • 請求中使用的方法是可快取的,即 GETHEAD 方法。如果指示了新鮮度並設定了 Content-Location 標頭,對 POSTPATCH 請求的響應也可以被快取,但這很少被實現。例如,Firefox 不支援它(Firefox bug 109553)。其他方法,如 PUTDELETE 是不可快取的,它們的結果不能被快取。
  • 響應的狀態碼被應用程式快取識別,並且是可快取的。以下狀態碼是可快取的:200203204206300301404405410414501
  • 響應中沒有特定的標頭,例如 Cache-Control,其值會禁止快取。

請注意,某些對特定 URI 的非快取響應可能會使同一 URI 之前快取的響應失效。例如,對 /pageX.htmlPUT 請求將使所有對 /pageX.htmlGETHEAD 請求的快取響應失效。

當請求的方法和響應的狀態都可快取時,對該請求的響應可以被快取。

http
GET /pageX.html HTTP/1.1
(…)

200 OK
(…)

PUT 請求的響應不能被快取。此外,它會使使用 HEADGET 方法對同一 URI 的請求的快取資料失效。

http
PUT /pageX.html HTTP/1.1
(…)

200 OK
(…)

響應中帶有特定值的 Cache-Control 標頭的存在可以阻止快取。

http
GET /pageX.html HTTP/1.1
(…)

200 OK
Cache-Control: no-cache
(…)

另見

  • HTTP 規範中提供了有關方法和快取的詳細資訊。
  • 常見可快取方法的描述:GETHEAD
  • 常見不可快取方法的描述:PUTDELETE,通常還有 POST