s3中设置并存在于响应标头中的缓存控制键,但是图像未缓存

问题描述

我在存储桶上设置了以下值的缓存控制键:public,max-age = 86400。这显示在响应标头中,但未缓存图像。图像返回200。我正在使用活动存储,s3和CloudFront。

///下面的响应头///

Accept-Ranges: bytes
Cache-Control: public,max-age=86400
Content-disposition: inline; filename="xhbtr_ba6c7e14-cab0-44c2-8701-e48aa75ab3f7_w1200.jpg"; filename*=UTF-8''xhbtr_ba6c7e14-cab0-44c2-8701-e48aa75ab3f7_w1200.jpg
Content-Length: 1444501
Content-Type: image/jpeg
Date: Mon,14 Sep 2020 15:15:21 GMT
ETag: "18c45e75803b2a82c0a85dc4dde7bba4"
Last-Modified: Mon,14 Sep 2020 14:00:44 GMT
Server: AmazonS3
x-amz-id-2: /6ynYC2FE4QwOaVJe1uJOBeCsJhfKFzNbMu+X7r0L5pRyax2JoxzJ5qoyO0Sb7dr09yFxZYj5/iE=
x-amz-request-id: 415DC4198F2ED5F1

解决方法

Server: AmazonS3

您正在查询S3。 S3没有缓存。 (cache-control指令是针对客户端而不是服务器的。)

您可能想要使用Cloudfront作为边缘缓存。 Cloudfront松散地遵循用于ege缓存的cache-control指令(取决于您如何配置它)。由于您在问题中提到Cloudfront,因此我想您已经设置好了。因此,不要调用S3 URL,而要使用在Cloudfront配置中设置的URL。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...