【发布时间】:2018-07-10 03:44:57
【问题描述】:
我在 S3 上有一个图像,它的 Cache-Control 标头设置为 public, max-age=3600。因此,下游系统(代理、浏览器等)应将其缓存 1 小时。
我可以看到浏览器在后续请求后返回 304(未修改)。
然后我去了并更新了 S3 上的图像(资源没有版本控制..URL 没有改变,只是 _content),但是浏览器去了并得到了 新版本。 (例如 HTTP 200)。
这是 chrome 网络流量:
请求:
- 200(正常)
- 304(未修改)
~幕后的图片变了~
- 200(正常)
- 304(未修改)
这怎么可能?我没有设置正确的标题吗?
有两件事让我感到困惑:
- 响应仍应为 304(未修改)?浏览器是如何知道去获取图像的?
max-age还没联系到? - chrome 不应该显示“来自磁盘缓存”还是什么? (实际上并没有去到服务器?)
我的猜测是 - 我没有设置正确的缓存控制标头或其他东西。所以有人可以解释一下这种行为,让我知道我需要做些什么来缓存资源 1 小时 :)
谢谢!
【问题讨论】:
-
尽管@zerkms 给出了一个很好的答案,但这个不错的 SO 答案为故事添加了一些不错的额外背景:stackoverflow.com/a/26339940/30674
标签: http caching browser-cache cache-control