跳到主要内容

9. 致谢 (Acknowledgments)

参见 [RFC7230] 的第 10 节。


10. 参考文献 (References)

10.1. 规范性参考文献 (Normative References)​

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.

[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing", RFC 7230, June 2014.

[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content", RFC 7231, June 2014.

[RFC7232] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests", RFC 7232, June 2014.

[RFC7233] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Range Requests", RFC 7233, June 2014.

[RFC7235] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Authentication", RFC 7235, June 2014.

10.2. 参考性参考文献 (Informative References)​

[BCP90] Klyne, G., Nottingham, M., and J. Mogul, "Registration Procedures for Message Header Fields", BCP 90, RFC 3864, September 2004.

[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.

[RFC5861] Nottingham, M., "HTTP Cache-Control Extensions for Stale Content", RFC 5861, April 2010.

[RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, "Network Time Protocol Version 4: Protocol and Algorithms Specification", RFC 5905, June 2010.

[RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, April 2011.


附录 A. 相对 RFC 2616 的变更 (Changes from RFC 2616)

本规范已为清晰性进行了大幅重写。

明确了经过身份验证的响应在何种条件下可以被缓存。(第 3.2 节)

新的状态码现在可以定义允许缓存对其使用启发式新鲜度。缓存现在被允许为带有查询组件的 URI 计算启发式新鲜度。(第 4.2.2 节)

计算年龄的算法现在不那么保守了。缓存现在必须(MUST)将带有不明时区的日期视为无效日期来处理,因为无法准确推断。(第 4.2.3 节)

Content-Location 响应头字段不再用于确定校验时应使用的恰当响应。(第 4.3 节)

选择要使用的已缓存协商响应的算法已在多个方面得到明确。特别是,现在显式允许在处理选择头字段时进行针对特定头字段的规范化。(第 4.1 节)

关于在执行失效操作时避免拒绝服务攻击的要求已得到明确。(第 4.4 节)

缓存失效仅在收到成功响应时发生。(第 4.4 节)

缓存指令被显式定义为不区分大小写。当只期望出现一个缓存指令却出现多个实例时的处理方式现已定义。(第 5.2 节)

"no-store" 请求指令不适用于响应;也就是说,缓存可以满足带有 no-store 的请求,且不会使其失效。(第 5.2.1.5 节)

private 和 no-cache 缓存指令的限定形式已被指出并未被广泛实现;例如,许多缓存将 "private=foo" 简单地解释为 "private"。此外,no-cache 限定形式的含义已得到明确。(第 5.2.2 节)

"no-cache" 响应指令的含义已得到明确。(第 5.2.2.2 节)

Expires 头字段值的一年上限已被移除;取而代之的是给出了使用合理值的理由。(第 5.3 节)

Pragma 头字段现在仅为向后兼容而定义;未来的 pragma 已被弃用。(第 5.4 节)

关于生成和处理 Warning 头字段的一些要求已经放宽,因为它并未被广泛实现。此外,Warning 头字段不再使用 RFC 2047 编码,也不允许多种语言,因为这些方面并未被实现。(第 5.5 节)

本规范引入了缓存指令注册表和警告码注册表,并定义了针对新缓存指令的考虑事项。(第 7.1 节和第 7.2 节)


附录 B. 导入的 ABNF (Imported ABNF)

以下核心规则通过引用纳入,其定义见 [RFC5234] 的附录 B.1:ALPHA(字母)、CR(回车)、CRLF(CR LF)、CTL(控制字符)、DIGIT(十进制 0-9)、DQUOTE(双引号)、HEXDIG(十六进制 0-9/A-F/a-f)、LF(换行)、OCTET(任意 8 位数据序列)、SP(空格)以及 VCHAR(任意可见的 US-ASCII 字符)。

以下规则定义于 [RFC7230]:

OWS           = <OWS, see [RFC7230], Section 3.2.3>
field-name = <field-name, see [RFC7230], Section 3.2>
quoted-string = <quoted-string, see [RFC7230], Section 3.2.6>
token = <token, see [RFC7230], Section 3.2.6>

port = <port, see [RFC7230], Section 2.7>
pseudonym = <pseudonym, see [RFC7230], Section 5.7.1>
uri-host = <uri-host, see [RFC7230], Section 2.7>

以下规则定义于其他部分:

HTTP-date     = <HTTP-date, see [RFC7231], Section 7.1.1.1>

附录 C. 汇总的 ABNF (Collected ABNF)

在下面汇总的 ABNF 中,列表规则按照 [RFC7230] 的第 1.2 节进行了展开。

Age = delta-seconds

Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS
cache-directive ] )

Expires = HTTP-date

HTTP-date = <HTTP-date, see [RFC7231], Section 7.1.1.1>

OWS = <OWS, see [RFC7230], Section 3.2.3>

Pragma = *( "," OWS ) pragma-directive *( OWS "," [ OWS
pragma-directive ] )

Warning = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ]
)

cache-directive = token [ "=" ( token / quoted-string ) ]

delta-seconds = 1*DIGIT

extension-pragma = token [ "=" ( token / quoted-string ) ]

field-name = <field-name, see [RFC7230], Section 3.2>

port = <port, see [RFC7230], Section 2.7>
pragma-directive = "no-cache" / extension-pragma
pseudonym = <pseudonym, see [RFC7230], Section 5.7.1>

quoted-string = <quoted-string, see [RFC7230], Section 3.2.6>

token = <token, see [RFC7230], Section 3.2.6>

uri-host = <uri-host, see [RFC7230], Section 2.7>

warn-agent = ( uri-host [ ":" port ] ) / pseudonym
warn-code = 3DIGIT
warn-date = DQUOTE HTTP-date DQUOTE
warn-text = quoted-string
warning-value = warn-code SP warn-agent SP warn-text [ SP warn-date
]