将我的所有文件上传到 AWS S3 存储桶后,我意识到缺少缓存控制标头。我已经以这种方式设置了我的 Cloudfront 发行版:
之后我使我的所有文件无效并等待它完成。但是我没有得到任何 Cache-Control 标头:
HTTP/1.1 200 OK
x-amz-id-2: fnvFKqf8aeykSWBnQAPlj6FE7JvZSPXHdyOosjce6PyMTr7FXQsSaUflKlJuMv+RBmvaErjsLUY=
x-amz-request-id: 890141931E821C87
Date: Tue, 09 Mar 2021 16:27:03 GMT
Last-Modified: Tue, 09 Mar 2021 16:25:04 GMT
ETag: "444ec6f04c020fe4dbd43b17e1c9baba"
Cache-Control: max-age=15552000
x-amz-version-id: q8R8DSCtnLai4D70p1csuwXiEZXaFQtv
Accept-Ranges: bytes
Content-Type: image/jpeg
Content-Length: 206070
Server: AmazonS3
答案 0 :(得分:0)
如果您希望在 CloudFront 的响应标头中包含“cache-control”标头,则必须为存储在 S3 存储桶中的每个对象指定此元数据,因为 CloudFront 不会专门返回此标头。
要使用 AWS 控制台批量编辑所有现有文件的元数据,您可以按照以下步骤操作:
要从 AWS CLI 添加元数据,请运行以下给定命令:
aws s3 cp s3://bucket-name/ s3://bucket-name/ --cache-control max-age=31536000 --recursive
默认情况下,S3 不会为所有上传到 S3 存储桶的对象添加缓存控制标头,但在上传文件时,您可以指定元数据以添加缓存控制标头。您可以运行以下给定的 AWS CLI 命令:
aws s3 cp object-name s3://bucket-name/object-name --cache-control max-age=31536000
如果您还想添加一些其他用户定义的元数据,那么您可以运行以下给定的命令:
aws s3 cp object-name s3://bucket-name/object-name --cache-control max-age=31536000 --metadata="test=1,example=2"