可缓存
可缓存的响应是指可以被缓存的 HTTP 响应,即可以被存储以便稍后检索和使用,从而节省向服务器发出新的请求。并非所有 HTTP 响应都可以被缓存;以下是 HTTP 响应可缓存的限制条件:
- 请求中使用的方法是可缓存的,即
GET或HEAD方法。如果指示了新鲜度并设置了Content-Location标头,对POST或PATCH请求的响应也可以被缓存,但这很少被实现。例如,Firefox 不支持它(Firefox bug 109553)。其他方法,如PUT或DELETE是不可缓存的,它们的结果不能被缓存。 - 响应的状态码被应用程序缓存识别,并且是可缓存的。以下状态码是可缓存的:
200、203、204、206、300、301、404、405、410、414和501。 - 响应中没有特定的标头,例如
Cache-Control,其值会禁止缓存。
请注意,某些对特定 URI 的非缓存响应可能会使同一 URI 之前缓存的响应失效。例如,对 /pageX.html 的 PUT 请求将使所有对 /pageX.html 的 GET 或 HEAD 请求的缓存响应失效。
当请求的方法和响应的状态都可缓存时,对该请求的响应可以被缓存。
http
GET /pageX.html HTTP/1.1
(…)
200 OK
(…)
对 PUT 请求的响应不能被缓存。此外,它会使使用 HEAD 或 GET 方法对同一 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
(…)