热更新清单文件下载优化的初步探索
说明
本文记录的是对热更新清单文件下载优化的一次初步尝试,主要基于个人摸索的猜想,尚未经过实际项目验证,可能存在不专业或不完善之处。其核心思路是通过优化清单文件的下载逻辑,减少不必要的网络请求和数据传输。
核心原则
热更新流程分为两大类:
- 全局版本不同 → 全量更新
- 全局版本相同但模块版本不同 → 增量更新
两种典型场景对比
场景1:全局版本不同(全量更新)
流程:
- 下载全局版本号
- 比对发现不同 → 下载完整清单
- 根据清单下载所有需要更新的资源(全量更新) ⚠️ 注意:完整清单只包含版本信息,不是资源文件本身
场景2:模块版本不同(增量更新)
流程:
- 下载全局版本号 → 比对相同
- 比对模块版本号 → 只下载有变化的模块清单
- 根据模块清单下载对应资源(增量更新)
关键数据对比
| 更新类型 | 下载量 | 速度 | 适用场景 |
|---|---|---|---|
| 全局版本更新 | 清单 + 全量资源 | 慢 | 重大版本迭代 |
| 模块版本更新 | 模块清单 + 模块资源 | 快 | 小功能更新 |
总结
“热更新下载流程分为两大类: 核心思想:优先比对版本号,避免直接下载完整对比文件
- 全局版本不同:先下载全局版本号,对比本地的全局版本号发现不同后下载完整清单,再根据清单下载所有需要更新的资源(全量更新)
- 模块版本不同:全局版本相同后,比对各模块版本号,只下载有变化的模块清单
这种分层设计能极大提升用户体验,是Unity热更新领域的标准实践,已被大量商业项目验证。”
知识库支持
从知识库中可以找到这些核心设计的依据: [1] 中提到:”版本号中包含大小版本标识,当大版本不一致时提示到下载完整包,当小版本号不一致增量更新资源” [8] 中提到:”Manifest文件:为每个AB自动生成,记录资源清单、依赖关系、版本号、压缩信息等”