【问题标题】:Google App Engine - keep previous version's static filesGoogle App Engine - 保留以前版本的静态文件
【发布时间】:2020-01-31 02:59:24
【问题描述】:

我们已将 Vue SPA 部署到 Google App Engine,它完全由静态处理程序提供服务。

我们面临的问题是,如果用户在我们的站点部署中处于活动状态,那么他们的旧 Webpack 块清单将变得无效(因为某些块的哈希被覆盖)。如果他们现在尝试路由到新页面并且该页面尝试获取被覆盖的块,我们会收到以下错误:

ChunkLoadError: Loading chunk Conversations failed.
(error: https://example.com/js/Conversations.71762189.js)

理想情况下,我们希望保留 N (2-3?) 应用静态文件的早期版本。

是我们将所有资产推送到Cloud Storage Bucket 的唯一选择吗?如果是这样,我们将如何修剪旧版本?

这是我的app.yaml供参考:

runtime: nodejs10
instance_class: F4
automatic_scaling:
  min_instances: 2
  max_instances: 10
default_expiration: "30d"
error_handlers:
  - file: default_error.html
handlers:
- url: /api/*
  secure: always
  redirect_http_response_code: 301
  script: auto
- url: /js/*
  secure: always
  redirect_http_response_code: 301
  static_dir: dist/js
- url: /css/*
  secure: always
  redirect_http_response_code: 301
  static_dir: dist/css
- url: /img/*
  secure: always
  redirect_http_response_code: 301
  static_dir: dist/img
- url: /(.*\.(json|js|txt))$
  secure: always
  redirect_http_response_code: 301
  static_files: dist/\1
  upload: dist/.*\.(json|js|txt)$
  expiration: "10m"
- url: /.*
  secure: always
  redirect_http_response_code: 301
  static_files: dist/index.html
  upload: dist/index.html
  expiration: "2m"

【问题讨论】:

    标签: google-app-engine caching webpack google-cloud-platform google-cloud-storage


    【解决方案1】:

    该问题通常发生在部署覆盖接收流量的现有服务版本(即服务版本未更改)时。来自Deploying an app

    注意:如果您部署的版本指定与 App Engine 上已存在的版本相同的版本 ID,则您部署的文件 deploy 将覆盖现有版本。这可能是有问题的,如果 该版本正在服务流量,因为您的应用程序的流量 可能会被打乱。如果您部署,您可以避免中断流量 使用不同版本 ID 的新版本,然后将流量转移到 那个版本。

    只要服务版本已部署且未删除或覆盖,其各自的静态资产仍然可以访问。

    为防止出现此问题,请始终使用新的服务版本进行部署,然后(逐渐)将流量迁移到新部署的版本。保留最新的 N 个服务版本将为您提供所需的 N 组静态资产。

    一般来说,这种部署实践是好的/推荐的其他几个原因:

    可能感兴趣:Google Frontend Retention between deployments

    【讨论】:

      【解决方案2】:

      使用--no-promote 标志进行部署,并利用标准环境中的Traffic Migration 功能逐步将流量迁移到新版本,这样所有用户都不会在新版本上线时立即切换。 App Engine 将同时托管新旧版本(或“蓝色”和“绿色”)一段时间,直到所有流量都指向新版本,然后旧版本将被关闭。

      另见:

      【讨论】:

        猜你喜欢
        • 2018-12-10
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 2017-08-15
        • 2016-06-12
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多