我有一个AWS Cloudfront发行版,它位于一个托管静态网站的S3存储桶前面。每次部署时,我都会使用AWS CLI和create-invalidation --distribution-id $CDN_DISTRIBUTION_ID --paths "/*"
命令来使Cloudfront发行版失效,该命令似乎运行成功。
问题是,它似乎不会无效。如果我在Chrome上打开生产站点,我得到的是一个旧版本的站点,如果我在一个没有历史记录的匿名浏览器中打开,我得到的是我所期望的最新版本。
我需要一些帮助来理解一些潜在的东西,这样我就知道去哪里找了。
发布于 2019-02-08 11:45:44
如果您在S3中使用" index.html“作为索引文档,但是使用的路径中没有index.html,那么您需要将其中没有index.html的路径与Cloudfront的invalidate一起使用。
因此,如果您在s3上有以下路径:
/some/path/index.html
你可以像这样在Cloudfront上访问:
http://example.com/some/path/
然后,您将需要执行此无效操作:
aws cloudfront create-invalidation --distribution-id ${YOUR_DIST_ID} --paths /some/path/
因此,基本上您需要使浏览器使用的路径无效,而不是使S3使用的路径无效。
如果您没有在URL中使用尾随斜杠,那么您可能会在没有尾随斜杠的情况下使URL无效。亚马逊还说,如果你还没有标准化,那么你应该两者兼而有之。
所以在这种情况下,你会这样做:
aws cloudfront create-invalidation --distribution-id ${YOUR_DIST_ID} --paths /some/path/ /some/path
这将涵盖无效判决中的两种情况。
https://stackoverflow.com/questions/54354204
复制相似问题