差异更新
安装
Capgo的Live Update系统可以通过仅发送更改的文件来更快、更高效地提供更新,而不是整个JS包。
这尤其有利于使用较慢或带宽受限网络连接的用户,因为它最小化了需要下载的数据量。
第二个好处是,当应用程序具有大量变化较少的资产,如图像或视频时,相比于压缩的JS文件,它们只需下载一次。
Delta更新的工作原理
标题:Delta更新的工作原理Capgo中的Delta更新由Capgo插件在您的应用程序中处理。当您使用标志上传应用程序的新版本时,Capgo会执行以下操作: --delta 标志,Capgo 的作用是:
- 为每个Delta文件生成校验和
- Delta文件的列表,包括路径和校验和,保存在__CAPGO_KEEP_0__数据库中
- 当设备运行您的应用程序时,Capgo插件接收新包的Delta文件列表。它将其与已有的文件进行比较,根据校验和和文件路径确定哪些文件已更改。
Capgo的__CAPGO_KEEP_1__系统可以通过仅发送更改的文件来更快、更高效地提供更新,而不是整个JS包。
Live Update
GitHub
Capgocode --delta API SDK CLI
- npm
5.10.0+,6.25.0+,7.0.35+bun8+)只下载更改的delta文件。 - 较旧的插件版本没有Delta支持的设备下载整个zip文件。
- 上传的包没有
--delta没有delta文件,所以每个设备都下载整个zip文件。
即使您启用了Delta,也仍然会看到一些全zip下载。它们来自仍在运行较旧的本机构建的用户,使用旧的插件版本。它们随着用户从商店更新应用而消失。
您可以使用 下载格式 设置
节省带宽
节省带宽Delta updates also lower your Capgo bandwidth usage. Bandwidth only counts the files a device actually downloads, so with Delta only the changed files count, not the whole bundle. Files or full zips already cached at the edge do not count, and interrupted downloads resume where they stopped without counting the downloaded part twice. See 节省带宽也会降低您的__CAPGO_KEEP_0__带宽使用量。带宽只计算设备实际下载的文件,所以使用Delta时,只有更改的文件才计算,不是整个包。缓存在边缘的文件或全zip文件不计算,中断的下载会在中断处恢复,不会将下载的部分计算两次。请参见“如何计算带宽?”.
启用差异更新
启用差异更新为您的Capgo应用启用差异更新,只需使用 --delta 标志上传新版本:
npx @capgo/cli@latest bundle upload --delta如果 autoUpdate 设置为即刻应用模式("atInstall", "onLaunch",或 "always"),在您的 capacitor.config中,CLI 会检测到它。在非交互环境中,它会自动发送 Delta 更新,在交互环境中,它会在上传之前提示您确认。遗留 directUpdate 配置仍然被检测到。使用 --no-delta 强制上传完整的包
Delta更新限制
标题:Delta更新限制- 空文件: CLI日志
Ignoring empty file...并排除零字节文件从Delta文件中。它不会停止上传,因此添加一个空文件可以改变结果包而不停止部署。不要在Delta包路径中包含零字节文件。 - 路径中的空格: 当一个包路径包含一个空格时,Delta上传会在上传文件之前失败。重命名文件或目录以移除空格,然后上传Delta更新。
强制Delta更新
标题:强制Delta更新如果您想确保所有上传都是Delta更新并防止意外的全包上传,请使用以下标志: --delta-only 终端窗口
npx @capgo/cli@latest bundle upload --delta-only当 --delta-only 使用时,Capgo 将只上传 delta 文件,而不需要完整的 zip 文件。任何一个没有 Delta 支持的插件版本的设备都无法下载更新。
您可能想使用 --delta-only 如果:
- 您总是想使用 Delta 更新,并且不想允许完整的包上传
- 您正在设置 CI/CD pipeline,并且希望确保所有自动上传都是 Delta
- 您的应用程序很大,带宽受限,因此您需要最小化上传/下载大小
如果您需要在 --delta-only 设置的情况下进行完整包上传,仅需运行上传命令而不使用 --delta-only。这样可以覆盖该单次上传的设置,允许您在需要时推送一个完整的包。
故障排除
Troubleshooting如果Delta更新似乎不起作用(即设备总是下载完整的JS包,即使是小的变化),请检查以下内容:
- 您使用的
--delta每次上传新版本时都要使用 - 如果使用
--delta-only确保您没有意外遗漏的--delta标志 - 您的设备正在运行支持Delta的插件版本(
5.10.0+,6.25.0+,7.0.35+,或8+) - 下载通道格式不是 仅全压缩包
- 您的设备有稳定的网络连接并且可以访问Capgo服务器
您也可以使用Capgo web应用程序来检查您的上次上传的详细信息:
- 前往 web应用程序
- 点击您的应用
- 点击统计条中的包数量
- 选择最后一个包
- 检查
Delta files该行显示 没有delta文件 当包作为全压缩zip上传时显示
如果您仍然遇到问题,请联系Capgo支持团队,获得进一步的帮助。他们可以检查服务器日志以确认您的Delta上传正在正确处理,并且设备正在接收delta文件。
那就行了! --delta flag 告诉 Capgo 上传 Delta 更新所需的单独 delta 文件。
请注意,每次上传新的版本时都需要使用 --delta every time you upload a new version that you want to be delivered as a Delta update. If you omit the flag, Capgo will upload the entire JS bundle as a single file, and devices will download the whole bundle even if only a small part has changed.
继续使用Delta更新
继续使用Delta更新如果您正在使用 Delta更新 为了计划live update的发布,连接它 Capgo 实时更新 为产品工作流程在CapgoLive Updates中 连接到 为 Overview 中的实现细节 功能 为 Features 中的实现细节 更新行为 为 Update Behavior 中的实现细节, 更新类型 为 Update Types 中的实现细节。