V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
FaiChou
V2EX  ›  程序员

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

  •  
  •   FaiChou ·
    FaiChou · 2021-03-03 17:03:39 +08:00 · 1704 次点击
    这是一个创建于 1348 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    为了兼容旧版本所以两者共存? http 能否移除不好用的字段? expires 完全可以被 max-age 代替吧?
    Kinnice
        5
    Kinnice  
       2021-03-03 19:48:16 +08:00 via Android
    @FaiChou 还有很多老系统用着,指望全世界都一次性改掉吗,只能等很久很久才能取消掉吧
    rodrick
        6
    rodrick  
       2021-03-03 21:07:21 +08:00
    1.为了新旧兼容 2. 为了客户端改时间的问题
    KuroNekoFan
        8
    KuroNekoFan  
       2021-03-04 08:57:13 +08:00 via iPhone
    @huangmingyou 什么强验证弱验证,只有 cache 和 content negotiate (缓存和内容协商)
    huangmingyou
        9
    huangmingyou  
       2021-03-04 10:14:03 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:19 · PVG 19:19 · LAX 03:19 · JFK 06:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.