现在项目采用全量更新, 每次检查更新先请求 项目.manifest
, 里面有最新版本的 ID, 然后请求 项目 /版本 /版本.manifest
获取文件列表, 文件列表是一个 相对路径 - hash 的 map, 更新时逐一对比 hash, hash 不匹配就到对应路径下载文件.
/-
|- 项目.manifest
|- 项目
|- 版本 1 (空目录)
|- 版本 2 (空目录)
|- 版本 3
| |- 版本.manifest
| |- 0
| | |- 00
| | |- ...
| |- 1
| |- ...
| |- f
现在想要改成二进制差异更新, 目前想到的设计方案就是额外增加差异存储目录, 更新时检查 项目 /本地版本-最新版本 /差异.manifest
是否存在, 存在就进行差异更新, 不存在就按原有模式更新.
/-
|- 项目.manifest
|- 项目
|- 版本 1 (空目录)
|- 版本 2 (空目录)
|- 版本 3
|- 版本 1-版本 2 (空目录)
|- 版本 1-版本 3
|- 版本 2-版本 3
| |- 差异.manifest
| |- 0
| | |- 00
| | |- ...
| |- 1
| |- ...
| |- f
不知道各位有没有更好的方案.
另外差异存几个版本合适呢?