【问题标题】:Set a default cache control and expires for entire S3 bucket/CloudFront为整个 S3 存储桶/CloudFront 设置默认缓存控制并过期
【发布时间】:2014-10-28 03:43:51
【问题描述】:

我有一个亚马逊 S3 存储桶,其中包含大约 30 万个项目,供大型网站使用。我想设置从 S3 存储桶从 CloudFront 提供的所有对象的到期时间,以便它们可以由用户的机器缓存在浏览器中。是否有一种简单的方法可以为当前存储桶中的所有 s3 对象设置缓存控制并且最重要的是为存储桶设置默认值,以便添加的任何新项目也获得过期和缓存控制标头或者这可以使用 CloudFront 完成吗?

到目前为止,我已经阅读了许多 AWS 文档,但一无所获:

【问题讨论】:

    标签: caching amazon-web-services amazon-s3 amazon-cloudfront


    【解决方案1】:

    为存储桶中的现有对象添加缓存控制的步骤

    1. git 克隆https://github.com/s3tools/s3cmd
    2. 运行 s3cmd --configure (您将被要求提供这两个密钥 - 从您的 确认电子邮件或来自您的亚马逊帐户页面。时要小心 复制他们!它们区分大小写,必须准确输入 否则您将不断收到有关无效签名或类似内容的错误。 请记住为密钥添加 s3:ListAllMyBuckets 权限,否则您将在测试访问时收到 AccessDenied 错误。)
    3. ./s3cmd --recursive modify --add-header="Cache-Control:public ,max-age= 31536000" s3://your_bucket_name/

    对于 CloudFront,您可以为缓存行为指定最小 TTL、最大 TTL 和默认 TTL。它们基本上是对象可以在 CloudFront 上缓存的时间,而 与为对象添加过期标题,即它不修改任何标题

    所以现在如果您没有添加任何标头,那么 cloudfront 会将其缓存为 DEFAULT TTL。 更多信息请阅读下表 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationDownloadDist

    【讨论】:

    • CloudFront 设置“最小 TTL”、“最大 TTL”和“默认 TTL”指定 CloudFront 缓存的行为,而不是 HTTP 响应中设置的标题,对吗?
    • 这似乎没有解决问题的最后一部分。您如何设置存储桶,以便在该文件夹甚至整个存储桶中添加的新内容都添加了该标签
    • CloudFront TTL 表示对象应该在边缘节点缓存多长时间,并且对客户端缓存不做任何事情
    • 很高兴我找到了这个工具。这是一件很棒的事情。
    • 使用 AWS CLI 命令如下所示:aws s3 cp s3://YOUR_BUCKET/ s3://YOUR_BUCKET/ --metadata-directive REPLACE --recursive --cache-control max-age=31536000
    猜你喜欢
    • 2012-05-13
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2015-11-19
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多