背景服务器
接口格式网络
管理界面app
后台逻辑url
因为线上乐刻客户端 App
第一次打开平台 H5
须要几秒的加载时间,这个体验对用户来讲并不友好,为了让用户跳转 H5
和跳转到原生同样的用户体验,就须要把 H5
相关的离线资源包下发给客户端,客户端就能够使用离线资源来代替实际网络请求,节省用户等待时间和流量消耗。这里就须要后台来负责离线资源包的管理和下发。
<!--more-->spa
offlineResourceInfo
接口参数:code
{ //"appVersion": "2.4.0", 能够去掉,由于请求头会包含 "resourceversionList": [{ "name": "m", "version": "1.0.0" },{ "name": "coach", "version": "1.0.0" },{ "name": "activity", "version": "1.0.0" }] }
offlineResourceInfo
接口返回结构体:cdn
{ "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/[模块名]/activity.full_1.0.0.zip
ip
资源包需上传到七牛空间 offlineh5
, 路径为 http://cdn.xxx.com/degrade/[模块名]/activity.full_1.0.0.zip
md5
App
第一次请求时, resourceVersionList
为空,服务器须要返回全部模块最新的全量资源。
App
后续请求都会带上本地最新的resourceVersionList
,服务器遍历resourceVersionList
,并和服务器上配置的全部升级模块最新版本进行比较,
若是升级模块版本与 App
本地版本相隔一个版本,就下发增量包。
若是升级模块版本比 App
本地版本相隔多个版本(跨版本),就下发全量包。
若是某个模块不要升级资源包,后台接口就不须要返回该模块的信息。
App
后续请求都会带上本地最新的resourceVersionList
,服务器遍历version list
,并和服务器上配置的全部降级模块源版本进行比较,
若是降级模块源版本与 App
本地版本相同,就下发降级包。
当降级逻辑和升级逻辑同时知足条件时,只启用降级逻辑。