0

这是来自我的亚马逊存储桶的示例响应。

$ curl -I http://amazon_bucket/image.jpg
HTTP/1.1 200 OK
x-amz-id-2: Tmr9SynKe8ztlB/Jix1hNrclwyc/k4NVHyqK3B0vNKUoPFIxfzwALi0XQRwEjhzO
x-amz-request-id: DCFDBCF510988AFB
Date: Wed, 27 Mar 2013 13:06:34 GMT
Cache-Control: public, max-age=2629000
Expires: Wed, 26 Mar 2014 23:00:00 GMT
Last-Modified: Wed, 27 Mar 2013 13:00:19 GMT
ETag: "52dd53ea738c7824b3f67cfea6a3af2a"
Accept-Ranges: bytes
Content-Type: image/jpeg
Content-Length: 627046
Server: AmazonS3

我希望浏览器缓存图像并从缓存中提供它。相反,当我重新加载页面时,我的浏览器会发出一个请求,这会产生 304 not modified 响应。为什么它表现得像must-revalidate是通过了选项?为什么浏览器不直接从缓存中提供图像?我在图像上配置的选项,来自我的 S3 客户端是这些:

Cache-Control: public, max-age=2629000
Expires: Wed, 26 Mar 2014 23:00:00 GMT

我应该将其他选项传递给 S3 文件吗?这可能是一个愚蠢的答案,但我看到我的浏览器为获取这些图片而发出的请求都具有以下标题:

Cache-Control:no-cache
Pragma:no-cache

为什么我的浏览器会发送这些?

4

1 回答 1

2

我正在刷新,显然,这总是会触发一个If-Modified-Since请求。如果您正常访问该页面,则该资产是从浏览器缓存中提供的。

于 2013-03-27T14:25:03.490 回答