这是来自我的亚马逊存储桶的示例响应。
$ 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
为什么我的浏览器会发送这些?