我在S3上有一个带有“Cache-Control”头设置为“public,max-age = 3600”的图像。因此,下游系统(代理,浏览器等)应该将其缓存1小时。
我可以看到浏览器在后续请求之后返回304(未修改)。
然后我去更新了S3上的图像(资源未经版本控制... URL未更改,只是内容更改),但浏览器获取了新版本。(例如HTTP 200)。
以下是Chrome网络流量:
我可以看到浏览器在后续请求之后返回304(未修改)。
然后我去更新了S3上的图像(资源未经版本控制... URL未更改,只是内容更改),但浏览器获取了新版本。(例如HTTP 200)。
以下是Chrome网络流量:
请求:
- 200 (ok) - 成功
- 304 (not modified) - 未修改
~ 图像在幕后更改 ~
- 200 (ok) - 成功
- 304 (not modified) - 未修改
这怎么可能?我没有设置正确的标头吗?
有两件事让我感到困惑:
- 响应仍应该是304(未修改)吗?浏览器如何知道去获取图像?
max-age
还没有达到? - Chrome不应该显示“来自磁盘缓存”或类似的东西吗?(而不是实际上去服务器?)
我的猜测是-我没有设置正确的缓存控制标头之类的东西。那么,有人可以解释一下这种行为,并让我知道我需要做些什么才能缓存资源1小时:)
谢谢!