我正在使用AWS代码构建和缓存通过AWS S3在AWS CloudFront中部署我的react应用程序,但是由于频繁的部署,桶的大小在一个月内增加到超过10 to 。
我试图在部署时删除旧的构建文件,但这给在浏览器中缓存旧代码的用户带来了问题。由于旧文件试图获得以前的版本构建,但这些文件被删除,所以它抛出404。
我试图为index.html文件设置无缓存,但这并不能解决这个问题。
有人面临这个问题吗?
发布于 2021-02-09 16:51:40
@Nilanth这里是我对类似案例所做的:
我的堆栈也是一个反作用应用程序(业务不那么关键)(它用于为主要内容管理流程提供文章选择的可能性。)app是通过CodeCommit - Codebuild到s3 Bucket构建的,使用CodePipeline & buildspec.yml文件。构建存储库提交触发的它。我也面临着一个类似的问题,Cloudfront没有为浏览器(html)“提供”最新的JS文件,因此它开始感觉像是缓存问题。
我做了这样一个很好的解决方案:
将这些设置为pre_build命令注意:通过删除JS文件,您的应用程序在新的应用程序从文件夹/js & /css中再次提供之前不能使用。我您的应用程序是业务关键,那么您可以考虑超越这一点,因为将有30-60年代的时间,该应用程序不能使用。如果构建失败了,那么根本就没有js/css资产,那么您就可以从Codebuild触发旧的构建了。这将需要一些努力来完成业务关键应用的Devops在这里的工作。
我不确定,这是来自Cloudfront的99%正确的解决方案,但它似乎避免了缓存问题,而且桶大小也很小。
-MM
发布于 2021-01-17 02:32:18
有许多元素可以抛出404,如果它们正在寻找根本原因,则需要一个接一个地证明。
首先,我将尝试存储桶本身,使用<s3-bucket-url>/index.html并查看该文件(在本例中为index.html )是否存在。
其次,cloudfront,我将假设cloudfront发行版配置正确(即/路径重定向到/index.html)。此外,每次编辑桶文件时,都会创建一个无效加速传播。
第三,您需要告诉您的用户不断地重新加载页面,或者使用匿名,特别是在您的站点处于不断开发的情况下。
https://stackoverflow.com/questions/65750635
复制相似问题