查看: 440|回复: 0

[JavaScript/JQuery] Hybird-后台接口和后台管理界面

发表于 2017-8-8 12:00:10
目录

背景

接口格式

管理界面

后台逻辑

背景

由于线上乐刻客户端 App 第一次打开平台 H5 需要几秒的加载时间,这个体验对用户来说并不友好,为了让用户跳转 H5 和跳转到原生一样的用户体验,就需要把 H5 相关的离线资源包下发给客户端,客户端就可以使用离线资源来代替实际网络请求,节省用户等待时间和流量消耗。这里就需要后台来负责离线资源包的管理和下发。

接口格式

offlineResourceInfo 接口参数:

  1. {
  2. //"appVersion": "2.4.0", 可以去掉,因为请求头会包含
  3. "resourceversionList": [{
  4. "name": "m",
  5. "version": "1.0.0"
  6. },{
  7. "name": "coach",
  8. "version": "1.0.0"
  9. },{
  10. "name": "activity",
  11. "version": "1.0.0"
  12. }]
  13. }
复制代码

offlineResourceInfo 接口返回结构体:

  1. {
  2. "data": {
  3. "resourceList": [{
  4. "name": "m",
  5. "version": "1.0.1",
  6. "url": "http://cdn.xxx.com/resource/m/m_update_1.0.0_1.0.1.zip",
  7. "md5": "a4d7feecbcae8e2ccba3b5ba90aa8a83",
  8. "isfull": false
  9. },{
  10. "name": "coach",
  11. "version": "1.0.1",
  12. "url": "http://cdn.xxx.com/resource/coach/coach_full_1.0.1.zip",
  13. "md5": "a4d7feecbcae8e2ccba3b5ba90aa8a83",
  14. "isfull": true
  15. }
  16. ]
  17. }
  18. }
复制代码

参数说明:

  1. "name": 模块名
  2. "version": 升级版本
  3. "url": 资源包下载地址
  4. "md5": 资源包 md5
  5. "isfull": 是否是全量升级包
复制代码
管理界面 添加升级资源包

资源包需上传到七牛空间 offlineh5, 路径为 http://cdn.xxx.com/upgrade/[模块名]/activity.full_1.0.0.zip

添加降级资源包

资源包需上传到七牛空间 offlineh5, 路径为 http://cdn.xxx.com/degrade/[模块名]/activity.full_1.0.0.zip

后台逻辑 App 启动

App 第一次请求时, resourceVersionList 为空,服务器需要返回所有模块最新的全量资源。

App 升级逻辑

App 后续请求都会带上本地最新的resourceVersionList,服务器遍历resourceVersionList,并和服务器上配置的所有升级模块最新版本进行比较,

如果升级模块版本与 App 本地版本相隔一个版本,就下发增量包。

如果升级模块版本比 App 本地版本相隔多个版本(跨版本),就下发全量包。

如果某个模块不要升级资源包,后台接口就不需要返回该模块的信息。

App 降级逻辑

App 后续请求都会带上本地最新的resourceVersionList,服务器遍历version list,并和服务器上配置的所有降级模块源版本进行比较,

如果降级模块源版本与 App 本地版本相同,就下发降级包。

当降级逻辑和升级逻辑同时满足条件时,只启用降级逻辑。



回复

使用道具 举报