• 看,有只猪
    2019-10-16
    老师,我有一个疑问:我先缓存了一个数据A,数据A的有效期是3天,但第一天官方认为该数据有问题,修改为了B。我第二天再次访问时,由于本地的数据还未过期,这时会使用数据A还是数据B呢?如果使用数据B又是通过什么方法更新的呢

    作者回复: 还会使用过期的数据A,基于时间的过期策略是有这个问题。所以以你的例子来看,A不太会被修改,但一修改如果更新不及时会造成严重错误,通常会把A的超链接放在C中,而且A的超链接中含有版本号,而C是不能缓存或者缓存时间极短,浏览器每次都会访问C(如.html)才会访问A,这样更新A时要同时更新C中的超链接A版本号即可。

    
     1
  • Panda
    2019-02-16
    浏览器缓存 成本低 体验哈 赞
    
     1
  • Geek_f6f02b
    2019-11-12
    这里的是否过期是浏览器判断的是吧?如果会员浏览器时间有问题,比正常快一个小时,而过期时间只有10分钟,那是会每次都认为过期了要走一次服务器,还是浏览器基于本机时间在一个小时内直接用本地缓存,即使本机时间快了一个小时。

    作者回复: 对,谁保存并打算使用缓存,谁就应该判断缓存是否过期。
    关于过期时间要看字段,如expire指定了绝对时间,这就存在时钟不同步问题。但max-age是现在主流使用的缓存过期时间,它是相对时间,而且如果它和expire同时出现时它的优先级更高,因此max-age不存在时钟不同步问题。
    关于缓存字段及其优先级,推荐你看一下《Web协议详解与抓包实战》的第29到32课。

    
    
  • cuikt
    2019-05-30
    nginx 做缓存,后端启用了gzip压缩,是否会对缓存有影响。

    作者回复: 不会,可以直接缓存压缩后的body

    
    
我们在线,来聊聊吧