gpt4 book ai didi

amazon-web-services - 通过滚动更新从 CloudFront 提供修订后的文件

转载 作者:行者123 更新时间:2023-12-04 08:06:34 27 4
gpt4 key购买 nike

我们在 Elastic Load Balancer 后面的两台服务器上运行了一个 Web 应用程序。我们每天多次部署它的新版本。每次发布新版本时,我们都会使用不同的 JS 和 CSS 文件名来避免缓存问题。例如,在一个版本中,我们有 app-v1.js,而在下一个版本中,我们有 app-v2.js。

我们希望使用 CloudFront 以 gzip 格式提供这些资源(前提是浏览器提供了适当的 Accept-Encoding header )。

我们探索了两种操作模式:

  • Cloudfront with S3 origin:似乎没有这个功能(无论对象是否压缩,都不会提供基于 header 的压缩版本)。
  • 具有自定义源的 Cloudfront:不应对滚动更新:当我们部署到服务器 A 时,我们的 HTML 将引用 app-v2.js。由于它尚未在 CloudFront 中缓存,因此 CloudFront 将从我们的服务器请求它,并且可能会访问尚未收到更新的服务器并因此提供 404。

  • 最佳做法是什么?我们错过了什么吗?我们考虑建立一个 nginx 代理服务器,以便为 Cloudfront 压缩来自 S3 的内容。它会是这样的:

    CloudFront --> nginx 代理 --> S3

    我们可以这样做,但希望我们可以避免维护这个部分。有什么建议吗?

    最佳答案

    这是我最终实现的解决方案:

    Elastic Loadbalancer 与我们的服务器通话 www.domain.comstatic.domain.com ,两者都是由同一组服务机器运行的虚拟主机。在开始对我们的网站进行滚动升级之前,我们的部署脚本会上传要在 static.domain.dom 下提供服务的新静态资源。 .如果浏览器支持,网络服务器被配置为返回一个 gzip 压缩响应。当所有网络服务器都收到新文件时,我们开始滚动升级。

    这保证了旧的修订文件和新的修订文件都可以在升级期间由任何服务器提供服务。

    关于amazon-web-services - 通过滚动更新从 CloudFront 提供修订后的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24973991/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com