我在S3上有一个图像,该图像的Cache-Control
标头设置为public, max-age=3600
。因此,下游系统(代理,浏览器等)应将其缓存1小时。
我可以看到浏览器在后续请求后返回了304(未修改)。
然后我去了S3上的图像并更新了(资源未版本化。URL并未更改,只是_content),但是浏览器却获得了< em> new 版本。 (例如HTTP 200)。
以下是chrome网络流量:
请求:
〜图像在幕后变了〜
这怎么可能?我没有设置正确的标题吗?
两件事让我感到困惑:
max-age
吗?我的猜测是-我没有设置正确的缓存控制标头或其他内容。所以有人可以请您了解一下这种行为,让我知道我需要做什么来缓存1小时的资源:)
谢谢!
答案 0 :(得分:2)
响应中指定了ETag
。
ETag
在规范中进行了解释
与修改相比,实体标签对验证的可靠性更高 修改存储不方便的情况下的日期
日期,其中HTTP日期值的一秒分辨率不是
足够,或者修改日期不一致的情况
保持。
因此,与基于日期的到期日相比,浏览器更喜欢它。
因此,您的浏览器每次都会发出请求,除非内容已更改-返回http 304。否则-它是http 200。
如果您只希望基于时间的到期日,请删除ETag
。
参考文献: