我通过将资产推送到AWS S3并通过CloudFront提供文件来部署单页应用程序网站。根据this answer,我不可能在自己的域下使用SSL直接从S3提供文件,所以如果我想以这种方式提供文件,我没有选择使用CloudFront的选择。AWS CloudFront根对象更新延迟
当我重新部署时,我生成一个新的有时间戳的根HTML文件(它本身链接到更新的JS和CSS包),将它与其他所有内容一起推送到S3,然后使该新文件成为新的默认根对象用于通过AWS的CloudFront分配。这可以防止CloudFront缓存所有内容并隐藏更新。
问题是,有时CloudFront需要很长时间来更新根对象。在我写这篇文章的时候,我每隔60秒就会刷新一次,等待重要的改变来实现产量。 CloudFront通过Web控制台显示正确(最新)的根对象,但它也显示“状态:进行中”。
有时,这种延迟几乎没有引人注意,而其他时间则相当长。今天它接近一个小时的延迟。
我该如何避免这种情况?我愿意对使用S3和CloudFront的这种部署方法进行更改,或者切换到已知可更好地处理此用例的替代平台。
更改根对象后,在'/'上执行缓存失效。更改根对象不会删除缓存中对'/'的旧请求。 –
有趣的迈克尔,我会试试看。谢谢! –