client/server 使用了哪些 Cache-Control header 值?

Which Cache-Control header values are used by client/server?

我正在尝试了解 Cache-Control 的哪些值将用于请求,哪些将用于响应。

是一个很好的答案,但它没有提及您是否应该在响应中使用这些值。

例如,请求或响应中应该使用no-store吗?

no-cache只能在请求中使用吗?

如果在响应而不是请求中使用它会发生什么?

在请求和响应中都使用它有什么意义吗?

确实令人困惑的是,相同的 header 名称和指令可能具有不同的含义,具体取决于它出现在请求还是响应中。标准的一位编辑承认了这一点,他 wrote 说:“如果我们今天从头开始设计 Cache-Control,我们可能会在请求中为字段使用不同的名称,以帮助避免这种情况混乱。"

幸运的是,RFC 7234 分别描述了 Cache-Control request directives and response directives,因此您可能可以在那里找到问题的答案。例如:

  • no-store 可以在请求或响应中使用。意思基本一样,只是客户端和服务端什么都不想要存储的问题

  • no-cache既可以用在请求中,也可以用在响应中,但意义不同。如果在请求中使用,则意味着对 this 请求的响应不应来自缓存(未经验证)。如果用于响应,则意味着 未来 请求不应满足此响应(未经验证)。