如果 Cache-Control 指令出现在请求和响应 header 中,哪个优先?

If a Cache-Control directive is present on request and response header, which takes precedence?

我准备好 RFC 7234 Cache-Control 文档。但我不清楚请求 header 将 max-age 设置为 0 但响应 header 具有 max-age=3600.

  • Modifications of the basic expiration mechanism; these may be imposed by either the origin server or the user agent.

但是哪个会生效呢?

  • Controls over cache revalidation and reload; these may only be imposed by a user agent.

max-age是这种控制吗?如果是,请求header将生效。

虽然header可能同名,但是Cache-Control在请求和响应中的作用是不同的。两者都由缓存使用,当它决定是否需要将请求发送到 origin server, or whether it can store the response 以供将来使用时。

what would be the behavior of a resource where the request header set max-age to 0 but the response header have the max-age=3600

带有 max-age=0 的请求表示客户端需要新的响应。缓存会将请求转发到源服务器。

响应 header of max-age=3600 将与响应一起存储在任何缓存中,并返回给客户端。它将与任何 未来 请求进行比较,以确定此响应是否是该客户端的 still fresh enough