跳转到内容

差异更新

Capgo 的实时更新系统可以通过仅发送更改的文件而不是整个 JS bundle 来更快、更有效地交付更新。

这对于使用较慢或计量网络连接的用户特别有益,因为它可以最大限度地减少需要下载的数据量。

第二个好处是当应用有很少更改的大型资源时,例如图像或视频,与压缩的 JS 文件相比,它只会下载一次。

Capgo 中的差异更新由安装在您的应用中的 Capgo 插件处理。当您使用 --partial 标志上传应用的新版本时,Capgo 会执行以下操作:

  1. 您的构建中的每个文件都单独上传
  2. 为每个文件生成校验和
  3. 创建新的 json 清单,列出所有文件及其校验和
  4. 此清单上传到 Capgo 数据库

当运行您的应用的设备检查更新时,Capgo 插件从服务器接收新清单。它将此清单与当前拥有的清单进行比较,根据校验和和文件路径识别哪些文件已更改。

然后,插件仅下载更改的文件,而不是整个 JS bundle。它通过将这些下载的文件与它已经拥有的未更改文件结合来重建应用的新版本。

要为您的 Capgo 应用启用差异更新,只需在上传新版本时使用 --partial 标志:

如果您想确保所有上传都是差异更新并防止任何意外的完整 bundle 上传,您可以使用 --partial-only 标志:

Terminal window
npx @capgo/cli@latest bundle upload --partial-only

当使用 --partial-only 时,Capgo 将仅上传单个文件并生成清单。任何不支持部分更新的设备都无法下载更新。

您可能希望使用 --partial-only 如果:

  • 您总是想要使用差异更新,并且永远不想允许完整的 bundle 上传
  • 您正在设置 CI/CD 管道并希望确保所有自动上传都是差异的
  • 您的应用很大并且带宽受限,因此您需要最大限度地减少上传/下载大小

如果您需要在设置 --partial-only 时进行完整的 bundle 上传,只需运行不带 --partial-only 的上传命令。这将覆盖该单次上传的设置,允许您在需要时推送完整的 bundle。

如果差异更新似乎不起作用(即,即使对于小更改,设备也总是下载完整的 JS bundle),请仔细检查:

  • 您每次上传新版本时都使用 --partial 标志
  • 如果使用 --partial-only,请确保您没有意外省略 --partial 标志
  • 您的设备正在运行最新版本的 Capgo 插件
  • 您的设备具有稳定的网络连接并可以访问 Capgo 服务器

您还可以使用 Capgo webapp 检查最后一次上传的详细信息:

  1. 转到 webapp
  2. 点击您的应用
  3. 点击统计栏的 bundles 数字。
  4. 选择最后一个 bundle
  5. 检查 Partial 字段 bundle 类型

如果您继续遇到问题,请联系 Capgo 支持以获得进一步的帮助。他们可以检查服务器日志以确认您的部分上传是否正在正确处理,以及设备是否正在接收更新的清单。

就是这样!--partial 标志告诉 Capgo 执行差异更新所需的单个文件上传和清单生成。

请注意,您需要在每次上传要作为差异更新交付的新版本时使用 --partial。如果您省略该标志,Capgo 将上传整个 JS bundle 作为单个文件,即使只有一小部分发生了变化,设备也会下载整个 bundle。