可缓存
可缓存响应是指可以缓存的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
(…)