【问题标题】:"Age: 0" HTTP Header“年龄:0”HTTP 标头
【发布时间】:2010-10-17 16:52:18
【问题描述】:

HTTP 标头“Age”的用途是什么?具体来说,值 0 (Age: "0") 是什么意思?

【问题讨论】:

  • 那么,是女孩还是男孩?

标签: http http-headers


【解决方案1】:

请参阅HTTP 1.1 specification,了解Age header field 的用途:

Age response-header 字段传达了发送者对自源服务器生成响应(或其重新验证)以来的时间量的估计。

此信息由convey an estimate of how old a stored response is 的中间代理使用:

HTTP/1.1 要求源服务器在可能的情况下在每个响应中发送一个 Date 标头,给出响应的生成时间(参见第 14.18 节)。我们使用术语“date_value”来表示 Date 标头的值,以适合算术运算的形式。

HTTP/1.1 使用 Age response-header 来传达从缓存中获取的响应消息的估计年龄。 Age 字段值是缓存对自原始服务器生成或重新验证响应以来的时间量的估计。

此外,Age 标头字段仅供中间缓存使用:

响应中存在 Age 标头字段意味着响应不是第一手的。

这意味着标题字段Age: 0 的存在意味着接收到的响应是由中间缓存发送的,并且只有零秒的时间。所以它可能只是在发送到客户端之前从源服务器获取。

【讨论】:

  • 您暗示此“缓存”是另一个代理服务器或应该是另一个代理服务器,如果它是直接响应的源服务器,则不应设置年龄响应标头。我在标准中没有看到,它可能是源服务器缓存没有?
  • @Blub 缓存可以是客户端和服务器之间的任何节点。路线上可能有多个代理,或者根本没有。缓存将根据所请求资源的存储表示的年龄设置 Age 标头字段值。
【解决方案2】:

“Age 标头表示自上次从源 Web 服务器请求资源以来所请求资源的估计时间(以秒为单位)。”

“由于网络延迟可能导致计算的年龄不正确,因此在返回路径中的每一步都根据估计的跳数之间的时间重新计算年龄。而不是依赖于其他中间代理所做的计算,年龄将通常计算为代理的当前日期与包含在 HTTP 响应中的 Date 常规标头之间的差异。如果不同步的时钟进行此计算导致负差异,则使用年龄 0。"

Chris Shiflett,“HTTP 开发人员手册”,第 83 页。

【讨论】:

    【解决方案3】:

    这恰好被指定in the protocol

    Age 响应标头字段传达了发件人对 自响应(或其重新验证)以来的时间量 在源服务器生成。缓存的响应是“新鲜的”,如果 它的年龄不超过其新鲜寿命。年龄值为 按照 13.2.3 节的规定计算。

    年龄=“年龄”“:”年龄值 年龄值 = 增量秒

    年龄值是非负十进制整数,表示时间 秒。 如果缓存接收到大于最大正数的值 它可以表示的整数,或者如果它的任何年龄计算 溢出,它必须发送一个值为 2147483648 (2^31)。包含缓存的 HTTP/1.1 服务器必须 在从其生成的每个响应中包含一个 Age 标头字段 自己的缓存。缓存应该使用至少 31 的算术类型 范围的位。

    【讨论】:

      猜你喜欢
      • 2012-10-03
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 2016-08-04
      • 2021-04-21
      • 1970-01-01
      相关资源
      最近更新 更多