【问题标题】:Amazon S3 static site serves old contentsAmazon S3 静态站点提供旧内容
【发布时间】:2020-12-05 18:08:07
【问题描述】:

我的 S3 存储桶托管一个静态网站。我没有设置云端。

我最近更新了我的 S3 存储桶中的文件。文件更新后,我在存储桶中手动确认。它仍然提供旧版本的文件。在 S3 上托管的静态网站上是否会发生某种缓存或版本控制?

到目前为止,我还没有找到任何关于 SO 的解决方案。注意:Cloudfront 未启用。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    在托管在 S3 上的静态网站上是否会发生某种缓存或版本控制?

    Amazon S3 存储桶为新对象的 PUTS 提供写后读一致性,并为覆盖 PUTS 和 DELETES 提供最终一致性

    这是什么意思?

    如果您在 s3 中创建一个新对象,您将能够立即访问您的对象 - 但是,如果您更新现有对象,您将“最终”从 s3 中获取最新版本的对象,所以s3 可能仍会为您提供以前版本的对象。

    我相信从前一段时间开始,在美国标准区域也可以更新写后读一致性。

    你需要等多久?好吧,这取决于亚马逊并没有提供太多这方面的信息。

    你能做什么?不多。如果您想确保您的 S3 存储桶传递文件没有任何问题,请在您的存储桶中上传一个新文件,您将能够立即访问它

    【讨论】:

    • 最终一致性一般会在几秒内解决。这通常不是静态网站服务的问题。我猜这里的实际问题是浏览器缓存静态资源,因为缓存控制标头设置在 S3 对象上。
    • @MarkB 这就是我首先想到的,但操作特别提到了 S3 端的缓存,我预计“清除缓存”已经完成
    【解决方案2】:

    解决方案在这里:

    但您需要使用 CloundFront。就像@Frederic Henri 所说,您不能在 S3 存储桶本身中做太多事情,但使用 CloudFront,您可以使其无效。

    CloudFront 将在边缘位置缓存该文件 24 小时,这是默认的 TTL(生存时间),并将继续返回该文件 24 小时。然后在 24 小时结束后,对该文件发出请求,CloudFront 将检查源并查看文件是否已在 S3 存储桶中更新。如果已更新,则 CloudFront 将提供对象的新更新版本。如果尚未更新,则 CloudFront 将继续提供对象的原始版本。

    但是,如果您更新源中的文件并希望通过您的网站立即提供该文件,那么需要做的是 CloudFront 失效。失效会从 CloudFront 缓存中擦除文件,因此当向 CloudFront 发出请求时,它将看到缓存中没有文件,然后将检查源并在源中提供新的更新文件。建议每次在源中更新文件时运行失效。

    运行失效:

    • 单击 CloudFront 控制台的以下链接 --https://console.aws.amazon.com/cloudfront/home?region=eu-west-1#
    • 打开有问题的发行版
    • 点击所有标签右侧的“无效”标签
    • 点击“创建失效”
    • 在弹出窗口中,它会询问路径。您可以输入 /* 使缓存中的每个对象无效,或输入文件的确切路径,例如 /images/picture.jpg
    • 最后点击“无效”
    • 这通常会在 2/3 分钟内完成
    • 那么一旦失效完成,当您再次通过 CloudFront 请求对象时,CloudFront 将检查源并返回更新后的文件。

    【讨论】:

      【解决方案3】:

      听起来 Akshay 尝试使用新文件名上传并且成功了。

      我只是尝试了相同的方法(我遇到了同样的问题),它解决了该文件对我不可用的问题。

      • 推送index.html
      • index.html未更新
      • mv index.html index-new.html
      • 推送new-index.html

      在此之后,index-html 立即可用。

      这有点糟糕 - 如果我想确保收件人会看到最新版本,我不能分享一个指向我网站的链接?我需要不断更改文件名并重新共享新链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多