http 协议中关于缓存过期的两个字段 `Expires` 和 `max-age` 几个问题

2021-03-03 17:03:39 +08:00
 FaiChou

这两者很相似, max-age 优先级更高.

但为什么有了其中一个字段, 还要继续再加另一个字段?

这种问题怎么才能搜出想要结果(rfc 的讨论)?关键字有哪些, 我尝试了几个关键字都搜不到好的回答.

https://tools.ietf.org/html/rfc2616#section-14.9.3

1604 次点击
所在节点    程序员
9 条回复
Mess17
2021-03-03 17:37:10 +08:00
expires 是绝对值,max-age 是相对值呀。HTTP 先有的 expires,后来因为 expires 可能有的问题(服务器和客户端时间可能不一致),才有的 max-age,所以都并存了。
Kinnice
2021-03-03 17:40:53 +08:00
Expires 在此时候之后,响应过期,时间是绝对时间,受本地时间影响。
max-age 是距离请求发起的时间的秒数,超过这个时间缓存被认为过期(单位秒)。与 Expires 相反,时间是相对于请求的时间。

https://blog.techbridge.cc/2017/06/17/cache-introduction/
huangmingyou
2021-03-03 17:58:52 +08:00
基于时间的是弱验证,还有配套的基于 etag 的强验证。
FaiChou
2021-03-03 18:08:14 +08:00
@Mess17 #1
@Kinnice #2

为了兼容旧版本所以两者共存? http 能否移除不好用的字段? expires 完全可以被 max-age 代替吧?
Kinnice
2021-03-03 19:48:16 +08:00
@FaiChou 还有很多老系统用着,指望全世界都一次性改掉吗,只能等很久很久才能取消掉吧
rodrick
2021-03-03 21:07:21 +08:00
1.为了新旧兼容 2. 为了客户端改时间的问题
FaiChou
2021-03-03 22:13:39 +08:00
KuroNekoFan
2021-03-04 08:57:13 +08:00
@huangmingyou 什么强验证弱验证,只有 cache 和 content negotiate (缓存和内容协商)
huangmingyou
2021-03-04 10:14:03 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/758095

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX