设置 Cache-Control: max-age=20 在请求 header 中有什么作用?

what does setting Cache-Control: max-age=20 in request header do?

当我在请求 header 中设置 Cache-Control: 'max-age=0' 时,此请求将重新验证其缓存条目(例如,使用 If-Not-Modified header)一直到源服务器。如果回复为 304(未修改),则可以使用缓存的实体。

当我在响应header中设置Cache-Control: 'max-age=20'时,意思是在20秒内,同一地址的请求将使用缓存。

但是如果我在请求header中设置Cache-Control: 'max-age=20',它就没有前者那么好用了,所以我想知道当我设置max-age=时会发生什么请求中的 xxx(xxx != 0) header?

规范告诉我们:

The max-age request directive indicates that the client is unwilling to accept a response whose age is greater than the specified number of seconds.

所以 max-age=20 意味着缓存不应该 return 超过 20 秒的缓存响应。

这里的主要区别是 client 正在选择所需的资源新鲜时间,而在通常情况下,它是 server 确定。