3

我们有一个使用从 Create React App 创建的 React 的 Web 应用程序(前端)。该应用在 Google Cloud Platform App Engine Standard 上运行。我们的 Web 应用程序是代码拆分的。然后在用户导航中加载每个页面。

它工作得非常好。我们遇到的问题是,例如用户 A 在应用主页上。我们部署了一个更改块文件名的修复程序。用户 A 然后尝试访问另一个页面,然后得到错误Loading chunk * failed。获取文件的 url 现在返回 404,因为该文件已被一些新的块文件替换。

这是我在研究过程中看到的一个常见问题,但我没有找到适用于 Google App Engine 的解决方案。

这是一篇解释问题/解决方案的文章:https ://mitchgavan.com/code-splitting-react-safely/

我想使用解决方案“解决方案 1:部署后将旧文件保留在您的服务器上”,但我看不到如何使用 GCP 执行此操作......

这是 app.yaml 文件

service: frontend
runtime: nodejs14
env: standard
instance_class: F1

handlers:
  - url: /(.*\..+)$
    static_files: build/\1
    upload: build/(.*\..+)$
  - url: /.*
    static_files: build/index.html
    upload: build/index.html

我们有以下调度文件(* 表示屏蔽 url)

dispatch:
  - url: "*"
    service: frontend

  - url: "www.*"
    service: frontend
4

1 回答 1

1

以前没有尝试过,但看看它是否有意义/有效。

  1. 我们有一篇关于从 GAE 下载源代码的博客文章。它包含对部署时源存储位置(暂存存储桶)的说明,它在那里保留多长时间以及如何修改它在 Google 自动删除之前保留多长时间。

  2. 当您部署到 GAE 时,gcloud仅部署已更改的文件(它不会部署未更改的文件)。由于您现在有了“新”文件,因为生成了新的哈希,旧文件不再存在于您的本地计算机上。我不知道 Google 是否会自动从上面第 1 条中的暂存位置删除这些文件。

  3. 我的建议是您按照博客文章中的步骤(从项目符号 1 开始)并更改(更改)文件在暂存桶中保留的时间。另一种选择是检查保留策略选项卡,看看您是否可以更改规则,以免文件被删除。如果您能够更改文件的保留时间或保留策略,它可能会解决您的问题。让我知道这个是否奏效

于 2021-11-16T23:40:14.103 回答