可缓存

可缓存响应是指可以缓存的HTTP响应,即可以存储以供以后检索和使用,从而避免向服务器发出新的请求。并非所有HTTP响应都可以缓存;以下是一些HTTP响应可缓存的约束条件

  • 请求中使用的方法是可缓存的,即要么是GET方法,要么是HEAD方法。如果指示了新鲜度并且设置了Content-Location标头,则对POSTPATCH请求的响应也可以缓存,但这很少实现。例如,Firefox不支持它(Firefox bug 109553)。其他方法,如PUTDELETE不可缓存,其结果不能被缓存。
  • 响应的状态代码为应用程序缓存所,并且是可缓存的。以下状态代码是可缓存的:200203204206300301404405410414501
  • 响应中没有特定的标头,例如Cache-Control,其值会禁止缓存。

请注意,某些对特定URI发出不可缓存响应的请求可能会使先前从同一URI缓存的响应失效。例如,对/pageX.html执行PUT操作将使对/pageX.html的所有GETHEAD请求的缓存响应失效。

当请求的方法和响应的状态都可缓存时,可以缓存对该请求的响应

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
(…)

另请参阅