2. Overview of Cache Operation (缓存操作概述)
正确的缓存操作在减少已在缓存中保存的信息传输的同时, 保留了 HTTP 传输的语义. 有关 HTTP 的一般术语和核心概念, 请参见 [HTTP] 的第 3 节.
虽然缓存是 HTTP 的一个完全可选 (OPTIONAL) 的特性, 但可以假定重用缓存的响应是可取的, 并且在没有要求或本地配置阻止的情况下, 这种重用是默认行为. 因此, HTTP 缓存要求的重点是防止缓存存储不可重用的响应或不当地重用已存储的响应, 而不是强制缓存始终存储和重用特定响应.
"缓存键 (Cache Key)" 是缓存用来选择响应的信息, 至少由用于检索存储响应的请求方法 (Request Method) 和目标 URI (Target URI) 组成; 该方法决定了在什么情况下可以使用该响应来满足后续请求. 然而, 当今常用的许多 HTTP 缓存仅缓存 GET 响应, 因此仅使用 URI 作为缓存键.
对于受内容协商 (Content Negotiation) 影响的请求目标, 缓存可能会存储多个响应. 缓存通过将原始请求的某些头部字段也纳入缓存键来区分这些响应, 使用 Vary 响应头部字段中的信息, 如第 4.1 节所述.
缓存可能会将其他材料纳入缓存键. 例如, 用户代理缓存可能会包含引用站点的身份, 从而对缓存进行"双重键控 (Double Keying)", 以避免某些隐私风险 (参见第 7.2 节).
最常见的情况是, 缓存存储检索请求的成功结果: 即对 GET 请求的 200 (OK) 响应, 其中包含目标资源的表示 (Representation) (参见 [HTTP] 的第 9.3.1 节). 然而, 如果方法的定义允许这种缓存并定义了适合用作缓存键的内容, 也可以存储重定向、否定结果 (例如, 404 (Not Found))、不完整结果 (例如, 206 (Partial Content)) 以及对 GET 以外方法的响应.
当缓存无法联系源服务器 (Origin Server) 或无法为请求找到转发路径时, 缓存处于"断开连接 (Disconnected)" 状态. 在某些情况下, 断开连接的缓存可以提供过期响应 (Stale Responses) (第 4.2.4 节).