Etag属性存在,但HTTP标头中不存在缓存控制

Etag属性存在,但HTTP标头中不存在缓存控制,http,caching,etag,Http,Caching,Etag,上面是响应的http头。它没有缓存控制属性,但具有Etag和Last Modified属性。浏览器如何处理这种情况?根据第13.2.4节,缓存被视为新缓存的时间有多长?: 13.2.4失效计算 为了决定 回应是新鲜的或陈旧的,我们需要 比较它的新鲜度和寿命 年龄。年龄计算为 如第13.2.3节所述;这 第节介绍如何计算 新鲜的一生,和 确定响应是否已过期。 在下面的讨论中,这些值 可以以任何形式表示 适合于算术运算 我们使用术语“expires\u value”来 表示到期日的值 标题。我们使用

上面是响应的http头。它没有缓存控制属性,但具有Etag和Last Modified属性。浏览器如何处理这种情况?根据第13.2.4节,缓存被视为新缓存的时间有多长?

13.2.4失效计算

为了决定 回应是新鲜的或陈旧的,我们需要 比较它的新鲜度和寿命 年龄。年龄计算为
如第13.2.3节所述;这 第节介绍如何计算
新鲜的一生,和 确定响应是否已过期。
在下面的讨论中,这些值 可以以任何形式表示
适合于算术运算

我们使用术语“expires\u value”来 表示到期日的值
标题。我们使用这个术语 “最大年龄值”表示 适当的数量值 “最大年龄”所携带的秒数 缓存控件的指令 响应中的标题(请参阅第节 14.9.3)

max-age指令需要 优先权过期,所以如果最大年龄 在响应中出现,则 计算方法很简单:

HTTP/1.1 200 OK
Date: Thu, 23 Jun 2011 07:59:40 GMT
Server: Apache/2.2.16 (Amazon)
Last-Modified: Thu, 23 Jun 2011 07:28:10 GMT
ETag: "68a7f-278-4a65c06e95680"
Accept-Ranges: bytes
Content-Length: 632
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
否则,如果中存在Expires 响应,计算如下:

  freshness_lifetime = max_age_value
请注意,这两个 计算容易受到时钟的影响 扭曲,因为所有的信息 来自源服务器

如果没有过期,则缓存控制: 最大使用年限或缓存控制:s-
最大年龄(见第14.9.3节)出现在 回应,回应确实如此 不包括其他限制 缓存时,缓存可能会计算 新鲜度寿命使用启发式。 缓存必须附加警告113 对于任何年龄超过 如果未发出此类警告,则为24小时 已经添加了

另外,如果响应确实有 上次修改时间,启发式
过期值不应超过 而不是间隔的某个部分
从那时起。一个典型的 这个分数可能是10%

用于确定 响应已过期,非常
简单:

  freshness_lifetime = expires_value - date_value

我还不清楚用于计算过期时间的启发式方法。请举例说明启发式部分。10%应用于什么时间间隔?启发式是应用程序定义的,使用任何你想要的。结果值不应超过
上次修改
标题中指定的时间与当前时间之间的某个时间分数(10%仅为示例)。
  response_is_fresh = (freshness_lifetime > current_age)