默认情况下是否允许 HTTP 代理缓存页面?

Is a HTTP proxy allowed to cache a page by default?

如果 Web 服务器 return 的 HTTP 响应没有任何缓存 headers(例如 PragmaCache-Control , ETagLast-Modified), 是允许缓存页面的 standards-conforming HTTP 代理并且return 如果网络浏览器再次请求相同的 URL 缓存版本(不咨询网络服务器)?

我对 HTTP/1.0 和 HTTP/1.1.

感兴趣

我正在阅读 https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.4,我认为答案是肯定的(默认情况下允许代理缓存页面和 return 缓存版本)。我的理解正确吗?

答案是肯定的。 http 中有一个称为启发式新鲜度的概念,它允许缓存计算资源的估计年龄,然后选择该值的任意比例用作新鲜度生命周期,在此期间它可以将缓存的内容提供给客户端。

有一些限制,例如,如果请求中有查询字符串,或者(如果我没记错的话)如果响应缺少日期,则不应执行此操作 header.