【问题标题】:AWS CloudFront website not being updatedAWS CloudFront 网站未更新
【发布时间】:2017-01-23 22:02:57
【问题描述】:

我们托管在 CloudFront 上的网站已经将近 24 小时没有更新了。

CloudFront 失效更新了一些文件。我可以在 S3 上看到所有文件都已更新。对这些文件执行 GET 我可以看到其中一个文件(一个名为 app.min.js 的 javascript 缩小文件)的时间戳都是正确的除了,它上面仍然有一个旧的时间戳。但是,查看 S3,app.min.js 文件具有正确的更新时间戳。强制对文件不缓存,app.min.js 仍然反映旧文件。

有人对这里可能发生的事情有任何建议吗?

【问题讨论】:

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


    【解决方案1】:

    您的文件仍在某处缓存。如果它没有缓存在 CloudFront 中,它可能会缓存在您的浏览器中或 CloudFront 与您之间的其他位置。

    使 CloudFront 分配失效不会使浏览器中的缓存失效。因此,请确保您使用的是新的浏览器来测试它。更好的是,使用curl

    • 再次使 CloudFront 无效
    • 重启浏览器
    • 使用其他浏览器
    • 使用其他计算机
    • 使用curl 避免本地缓存

    尽一切努力消除命中缓存版本的可能性。

    还有:

    1. 向 S3 上的文件添加“无缓存”不会对 CloudFront 中的缓存版本产生任何影响。您需要再次使缓存无效以强制 CloudFront 获取新版本。
    2. CloudFront 的默认 TTL 为 24 小时。因此,一旦达到 24 小时,它应该从源重新获取文件。您可以查看标头以了解 TTL 用完之前需要多长时间。

    【讨论】:

    • 感谢马特的帮助。好吧,我还是很困惑。使用curl,我们确实获得了最新版本,但是通过任何浏览器和网络(尝试过的家庭/工作计算机和不同的浏览器),文件都没有更新。
    • 嗯,curl无法获取最新的请求头Accept-Encoding:gzip, deflate, sdch, brChrome使用的相同请求头
    • 是的,它可能是对文件进行双重 gzip 压缩,现在正在测试。我在 gulp .pipe(awspublish.gzip({ext: ''})) 中使用 awspublish npm 包发布,而 cloudfront 可能会再次压缩 doh
    • 如果您要使用 CloudFront 的压缩,则不要将压缩版本放在 S3 中。
    • 是的,我们在云端关闭了它,试图打开它以自动执行它并在部署期间将其关闭,仍在测试中。
    猜你喜欢
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 2014-09-04
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    相关资源
    最近更新 更多