资源文件更新逻辑设计
1 资源文件更新
1.1 规则:
1.1.1 资源文件存在于三个位置:app内、更新目录内、更新服务器上。任何位置的资源文件,相对路径保持一致。
1.1.2 本地保存根路径:app-storage://
1.1.3 单个文件版本控制:不做。每次需要更新时清除更新目录,重新下载全部可更新资源。
1.1.4 加载顺序:更新目录→app目录→更新服务器(即使更新到本地失败,该资源也应可以直接从服务器读到)
1.2 特殊文件:
1.2.1 config_base.ini:默认配置文件,包括基础版本号(该app发行包的默认资源版本号)。此文件不做更新。
1.2.2 version.xml:记录当前资源版本
1.2.3 config.ini:当前版本的配置文件,包括该版本资源文件列表
1.3 更新流程:
1.3.1 从服务器上更新version文件,对比本地的版本,确认是否需要更新
1.3.2 从服务器上更新config文件
1.3.3 解析config文件进行部分初始化
1.3.4 从config中读取资源文件列表,并更新
1.3.5 若更新时,本地文件写入失败,继续流程
2 缓存
2.1 规则:
2.1.1 缓存文件保存路径:app-storage://cache/
2.1.2 缓存文件不保持完整路径,文件路径做以下转换:
imgDomain起始的url:将imgDomain去除,用剩余的路径做转换
其他host的url:保存host和path部分(即目前写死为http,若有需求使用其他协议再改),路径按规则转换
转换规则:将路径中的"/"、"?"改为"~"
例:http://math.zuoyebao.net/latex/png?tex=123,转换后变为:math.zuoyebao.net~latex~png~tex=123
2.2 缓存有效期控制:TODO
2.3 缓存移除策略:当缓存大小超过上限时,全部清除