【问题标题】: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 中看不到。 我做了几次硬刷新,但没有运气。 只是在另一个国家使用 VPN 帮助我看到了更新。

是否与代码库或 AWS 配置有关? 解决办法是什么?

附:我在暂存环境中从未遇到过这种情况,并且在生产环境中发生过。

【问题讨论】:

  • 您在使用 CloudFront 吗?边缘缓存的内容可能会解释您的症状。
  • 是的,我使用 CloudFront。并且x-cache 设置为Miss from cloudfront

标签: node.js amazon-web-services express amazon-elastic-beanstalk web-deployment


【解决方案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. 谷歌“反应中的缓存破坏” - 这绝对是可能的)
猜你喜欢
  • 2022-09-25
  • 2017-05-10
  • 2020-07-01
  • 2022-01-21
  • 2013-07-24
  • 1970-01-01
  • 2016-08-20
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多