AWS CloudFront 缓存问题

AWS CloudFront Caching Issue

我正在使用链接到 S3 存储桶的 AWS CloudFront 来托管静态 (React) 网站。一切似乎都正常,除非我将更改后的文件上传到存储桶。我知道按照设计,CloudFront 会缓存文件,您必须使更改的文件无效,CloudFront 才能尽快获取新的更改。但是,每当我浏览网站(在不同的设备上)时,我仍然会得到旧版本的文件。有时,我会看到最新版本的网页,但稍后当我浏览到同一页面时,它会变成旧版本(即使在清除缓存或以隐身模式浏览之后)?!很奇怪。

我对我的设置有一些疑问:

非常感谢对此的一些反馈,因为我是 AWS 的新手,而且有太多可配置的元素,有时看起来确实令人生畏!

谢谢

Does adding a cache-control value on all files affect the invalidation?

是的,那是你的问题。

如果您在文件上添加缓存控制,它们将缓存在客户端(浏览器)上,并且 Cloudfront 中的失效不会从客户端的缓存中删除这些文件。

您有多种选择:

  • 不要为文件添加缓存控制(不好——会减慢页面加载时间)
  • 将文件的缓存控制设置为更短的时间跨度(不太糟糕——在缓存过期后减慢页面加载时间)
  • 清除您网站的浏览器缓存(不太好——您的用户可能仍会看到旧内容)
  • 完全禁用浏览器的缓存(不太好——几乎每个网站都会变慢)
  • 放弃单页 React 并移动到服务器端呈现 (SSR) React 应用程序(最好的选择,但需要做很多工作。不过完全值得)

是的,缓存真的很致命,但在 AWS 中,您有一个解决方案....

1. AWS Cloud front
2. In that Click the ID you want
3. You can able to see the Invalidations tab, click that
4. Then Create Invalidation
5. Enter -> /*   and click Invalidate 

失效完成后,您可以看到您的最新更改