H5离线包方案
完整实现版本
背景
webview离线包方案简单来说,是解决性能问题,提升hybrid页面可用性。
核心思路为:
- 实现H5动态更新方案
- 更好的webview渲染加载性能
离线包发布
- CI/CD完成,打包zip包,推送到离线包平台
查询离线包
- 提供HTTP服务,客户端需要接口查询离线包状态,每次应用启动查询,获取各个业务线离线包最新版
获取离线包 - 提供HTTP服务用来提供离线包资源下载
- 启动App下载离线资源
- 下发方式
- 增量下发,即每次仅下发差异部分资源
- 随版本下发,即每次打包全量资源下发
构建能力
- 客户端请求模式,由客户端根据json文件发起网络请求
// 一个描述这个离线包的 json 文件 appConfig.json可用性和命中率1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33{
// 应用id
"appid": XXX,
// 应用名称
"name":"template1",
// 版本号
"version": "2020.1204.162513",
// 作者
"author": "xxxx",
// 描述
"description": "XXX页面",
//
"check_integrity": true,
"home": "https://www.XXX.com/XXX",
"host": {"online":"XXX.com"},
"scheme": {"android":{"online":"https"},
"iOS":{"online":"resource"}},
// 需要的离线包资源,由webpack打包实现
"expectedFiles":["1.js","2.js","1.css","2.css","index.html"],
"created_time":1607070313,
"sdk_min":"1.0.0",
"sdk_max":"2.0.0",
// 数据接口位置
"dataApi": ["xxxx"]
}
有可能下载、解压过程中出现错误导致不可用等异常处理 - 重试机制与定时轮询
- 网络条件允许,每间隔15s重试一次,重试5次
- 服务端推送离线包
- 离线包完整性校验
- 防止运营商劫持等,接口下发文件签名
- 离线包下载完成客户端进行签名校验
安全性
- 灰度发布
- 可以由接口返回走线上还是离线包概率控制
- 回退机制
- 切换到稳定版本(版本回退)
- 回退到线上模式
一般常见问题
- 离线包解压缩失败;
- 离线包服务平台接口超时;
- 使用增量 diff 时,资源合并失败;
本文标题:H5离线包方案
文章作者:Niuhk
发布时间:2023-09-05
最后更新:2024-10-15
原始链接:https://www.niuhk.cn/2023/09/05/H5离线包方案/
版权声明:转载请注明出处!
分享