跳过内容

Delta 更新

Capgo的Live Update系统可以通过仅发送更改的文件来更快、更高效地分发更新,而不是整个JS包。

这尤其有利于使用较慢或带宽受限网络连接的用户,因为它可以最小化需要下载的数据量。

第二个好处是,当应用程序具有大量变化较少的资产时,例如图像或视频,相比于压缩的JS文件,它只会下载一次。

Delta(清单)更新的工作原理

关于Delta(Manifest)更新的工作原理

在Capgo中,Delta(manifest)更新由安装在应用中的Capgo插件处理。当您使用Capgo上传应用的新版本时,Capgo会执行以下操作: --delta flag, Capgo does the following:

  1. 为每个文件生成校验和
  2. 创建一个新的JSON清单,列出所有文件及其校验和
  3. 将此清单上传到__CAPGO_KEEP_0__数据库
  4. 当设备运行您的应用时,检查更新时,Capgo插件从服务器接收新的清单。它将此清单与当前清单进行比较,根据校验和和文件路径确定哪些文件已更改。

When a device running your app checks for an update, the Capgo plugin receives the new manifest from the server. It compares this manifest to the one it currently has, identifying which files have changed based on the checksums and file paths.

清单

启用Delta(清单)更新

启用Delta(清单)更新

要为您的Capgo应用启用Delta(清单)更新,请简单地使用 --delta 标志上传新版本时:

终端窗口
npx @capgo/cli@latest bundle upload --delta

如果 autoUpdate 设置为即时应用模式("atInstall", "onLaunch",或 "always"),则__CAPGO_KEEP_0__检测到它。在非交互环境中,它自动发送Delta(清单)更新,在交互环境中,它会在上传之前提示您确认。 capacitor.config, the CLI detects it. In non-interactive environments it sends Delta (manifest) updates automatically, and in interactive environments it prompts you to confirm before uploading. Legacy directUpdate 配置仍然被检测到。使用 --no-delta 强制进行全量包上传。

强制Delta(清单)更新

标题:强制Delta(清单)更新

如果您想确保所有上传都是Delta(清单)更新,并防止任何意外的全量包上传,请使用 --delta-only 标志:

终端窗口
npx @capgo/cli@latest bundle upload --delta-only

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

您可能想使用 --delta-only 如果:

  • 您总是想使用Delta(清单)更新,并且永远不想允许全量包上传
  • 您正在设置一个CI/CD管道,并希望确保所有自动上传都是Delta(清单)
  • 您的应用程序很大,带宽受限,因此需要最小化上传/下载大小

如果您需要在 --delta-only 设置为true时进行全量包上传,仅需运行 --delta-only命令即可。这样会覆盖该单次上传的设置,允许您在需要时推送一个完整的包。

如果Delta(清单)更新似乎没有生效(即设备始终下载完整的JS包,即使有小的变化),请检查:

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

您也可以使用CapgoWeb应用程序来查看您上次上传的详细信息:

  1. 前往 webapp
  2. 点击您的应用
  3. 点击统计条中的包数量
  4. 选择最后一个包
  5. 查看 Partial 字段 包类型

如果您继续遇到问题,请联系Capgo支持团队获取进一步帮助。他们可以检查服务器日志来确认您的Delta(清单)上传是否正确处理,并且设备是否接收到更新的清单。

That’s it!The --delta 标志告诉Capgo执行单独文件上传和清单生成所需的Delta(清单)更新。

注意,您需要在每次上传新版本时使用 --delta ,以便该版本作为Delta(清单)更新被传递。如果您省略标志,Capgo将上传整个JS包作为单个文件,设备将下载整个包,即使只有小部分发生了变化。