作者:哀乐交加6 | 来源:互联网 | 2024-12-23 16:52
本文探讨了如何通过优化Hybrid应用的后台接口和管理界面,提升用户体验。特别是在首次加载H5页面时,为了减少用户等待时间和流量消耗,介绍了离线资源包的管理和分发机制。
目录
背景介绍
在乐刻客户端 App 中,用户首次访问平台 H5 页面时会遇到几秒的加载延迟,这影响了用户体验。为了使 H5 页面的加载体验与原生应用一致,我们引入了离线资源包的机制。通过将这些离线资源下发给客户端,可以显著缩短加载时间并节省流量。
接口设计
offlineResourceInfo
接口参数:
{
"resourceVersionList": [{
"name": "m",
"version": "1.0.0"
}, {
"name": "coach",
"version": "1.0.0"
}, {
"name": "activity",
"version": "1.0.0"
}]
}
offlineResourceInfo
接口返回结构体:
{
"data": {
"resourceList": [{
"name": "m",
"version": "1.0.1",
"url": "http://cdn.xxx.com/resource/m/m_update_1.0.0_1.0.1.zip",
"md5": "a4d7feecbcae8e2ccba3b5ba90aa8a83",
"isFull": false
}, {
"name": "coach",
"version": "1.0.1",
"url": "http://cdn.xxx.com/resource/coach/coach_full_1.0.1.zip",
"md5": "a4d7feecbcae8e2ccba3b5ba90aa8a83",
"isFull": true
}
]
}
}
参数说明:
"name": 模块名称
"version": 升级版本
"url": 资源包下载地址
"md5": 资源包的 MD5 校验码
"isFull": 是否为全量升级包
管理界面
添加升级资源包
资源包需上传至七牛云存储空间 offlineh5
, 上传路径为 http://cdn.xxx.com/upgrade/[模块名]/[文件名]
。例如:
添加降级资源包
资源包需上传至七牛云存储空间 offlineh5
, 上传路径为 http://cdn.xxx.com/degrade/[模块名]/[文件名]
。例如:
逻辑实现
App 启动
当 App 首次请求时,resourceVersionList
为空,服务器应返回所有模块最新的全量资源。
App 升级逻辑
后续请求中,App 会带上本地最新的 resourceVersionList
,服务器遍历该列表并与服务器上的最新版本进行比较:
- 如果目标版本与本地版本相差一个版本,则下发增量包。
- 如果目标版本与本地版本相差多个版本,则下发全量包。
- 若某模块无需升级,后台接口不返回该模块信息。
App 降级逻辑
后续请求中,App 会带上本地最新的 resourceVersionList
,服务器遍历该列表并与服务器上的降级版本进行比较:
- 如果降级版本与本地版本相同,则下发降级包。
- 当降级逻辑和升级逻辑同时满足条件时,优先启用降级逻辑。