Cloudfront 缺少缓存控制

时间:2021-03-09 16:41:21

标签: amazon-web-services amazon-cloudfront

将我的所有文件上传到 AWS S3 存储桶后,我意识到缺少缓存控制标头。我已经以这种方式设置了我的 Cloudfront 发行版:

enter image description here

之后我使我的所有文件无效并等待它完成。但是我没有得到任何 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

1 个答案:

答案 0 :(得分:0)

如果您希望在 CloudFront 的响应标头中包含“cache-control”标头,则必须为存储在 S3 存储桶中的每个对象指定此元数据,因为 CloudFront 不会专门返回此标头。

要使用 AWS 控制台批量编辑所有现有文件的元数据,您可以按照以下步骤操作:

  1. 登录 AWS 管理控制台
  2. 进入 S3 存储桶
  3. 点击“名称”附近的复选框选择所有文件
  4. 点击“操作”,然后选择“编辑元数据”
  5. “添加元数据” --> 指定类型为系统定义,键为缓存控制,值指定为 max-age=31536000
  6. 按“编辑元数据”按钮

要从 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"