为啥有些用户在 AWS ElasticBeanstalk 中部署后没有体验到更新?
Posted
技术标签:
【中文标题】为啥有些用户在 AWS ElasticBeanstalk 中部署后没有体验到更新?【英文标题】:Why some users don't experience the updates after deploying in AWS ElasticBeanstalk?为什么有些用户在 AWS ElasticBeanstalk 中部署后没有体验到更新? 【发布时间】:2021-06-15 03:41:36 【问题描述】:我在 AWS Elasticbeanstalk 上部署了一个 Node.js 应用程序(实际上是由 Node.js/Express 包装的 React 应用程序),并确认部署成功。 但部署后,一些测试人员可以看到更新,但其他人看不到。
对我来说,我可以在 IE (Internet Explorer) 中看到更新,但在 Chrome 和 Firefox 中看不到。 我做了几次硬刷新,但没有运气。 只是在另一个国家使用 *** 帮助我看到了更新。
是否与代码库或 AWS 配置有关? 解决办法是什么?
附:我在暂存环境中从未遇到过这种情况,并且在生产环境中发生过。
【问题讨论】:
您在使用 CloudFront 吗?边缘缓存的内容可能会解释您的症状。 是的,我使用 CloudFront。并且x-cache
设置为Miss from cloudfront
【参考方案1】:
短期 - 使 CloudFront 中的缓存无效,等待它完成(10-20 分钟),然后告诉测试人员硬刷新。现在每个人都应该看到最新版本。
长期 - 由于您的缓存策略,您遇到了这个问题,请查看标题。我建议您的主 html 文件的缓存时间非常短 - 几秒钟到一分钟等 - 如果您同时收到大量请求,这将平滑负载,但会相当快地传播任何更改。如果您以包含版本的方式(例如/assets.v1.js
或/assets.js?v=1
)引用它们,则任何加载的资产都可以安全地使用较长的缓存时间。
【讨论】:
1.我不认为我在 CloudFront 中使用缓存。x-cache
设置为 Miss from cloudfront
2。这是一个反应应用程序,我不手动导入这些捆绑文件。
Miss from cloudfront
确认您的流量是通过云端路由的(因此每个边缘服务器都将遵守收到的任何缓存指令)。如果您重复请求,该标头是否会更改为Hit
?您和您的测试人员是在同一个位置还是分散在不同的位置? (2. 谷歌“反应中的缓存破坏” - 这绝对是可能的)以上是关于为啥有些用户在 AWS ElasticBeanstalk 中部署后没有体验到更新?的主要内容,如果未能解决你的问题,请参考以下文章
如何在aws elastic beanstalk上为非www和www域配置letencrypt ssl?
任何获得 404 Not Found nginx/1.16.1 的 AWS EB Laravel 路由
为啥在 AWS Redshift 中对密码进行 md5 哈希处理时密码身份验证失败?
为啥有些用户可以在 Synapse 工作区中看到链接的 Azure Data Lake Gen 2 资源,而其他用户却不能?