目錄
- 背景
- 接口格式
- 管理界面
- 后臺(tái)邏輯
背景
由于線上樂刻客戶端 App
第一次打開平臺(tái) H5
需要幾秒的加載時(shí)間刀森,這個(gè)體驗(yàn)對(duì)用戶來說并不友好舰褪,為了讓用戶跳轉(zhuǎn) H5
和跳轉(zhuǎn)到原生一樣的用戶體驗(yàn)毛好,就需要把 H5
相關(guān)的離線資源包下發(fā)給客戶端款筑,客戶端就可以使用離線資源來代替實(shí)際網(wǎng)絡(luò)請(qǐng)求莹桅,節(jié)省用戶等待時(shí)間和流量消耗扼菠。這里就需要后臺(tái)來負(fù)責(zé)離線資源包的管理和下發(fā)。
接口格式
offlineResourceInfo
接口參數(shù):
{
//"appVersion": "2.4.0", 可以去掉萄窜,因?yàn)檎?qǐng)求頭會(huì)包含
"resourceversionList": [{
"name": "m",
"version": "1.0.0"
},{
"name": "coach",
"version": "1.0.0"
},{
"name": "activity",
"version": "1.0.0"
}]
}
offlineResourceInfo
接口返回結(jié)構(gòu)體:
{
"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
}
]
}
}
參數(shù)說明:
"name": 模塊名
"version": 升級(jí)版本
"url": 資源包下載地址
"md5": 資源包 md5
"isfull": 是否是全量升級(jí)包
管理界面
添加升級(jí)資源包
資源包需上傳到七帕逄蓿空間 offlineh5
, 路徑為 http://cdn.xxx.com/upgrade/[模塊名]/activity.full_1.0.0.zip
添加降級(jí)資源包
資源包需上傳到七牛空間 offlineh5
, 路徑為 http://cdn.xxx.com/degrade/[模塊名]/activity.full_1.0.0.zip
后臺(tái)邏輯
App 啟動(dòng)
App
第一次請(qǐng)求時(shí)查刻, resourceVersionList
為空键兜,服務(wù)器需要返回所有模塊最新的全量資源。
App 升級(jí)邏輯
App
后續(xù)請(qǐng)求都會(huì)帶上本地最新的resourceVersionList
穗泵,服務(wù)器遍歷resourceVersionList
普气,并和服務(wù)器上配置的所有升級(jí)模塊最新版本進(jìn)行比較,
- 如果升級(jí)模塊版本與
App
本地版本相隔一個(gè)版本佃延,就下發(fā)增量包现诀。 - 如果升級(jí)模塊版本比
App
本地版本相隔多個(gè)版本(跨版本),就下發(fā)全量包履肃。 - 如果某個(gè)模塊不要升級(jí)資源包赶盔,后臺(tái)接口就不需要返回該模塊的信息。
App 降級(jí)邏輯
App
后續(xù)請(qǐng)求都會(huì)帶上本地最新的resourceVersionList
榆浓,服務(wù)器遍歷version list
,并和服務(wù)器上配置的所有降級(jí)模塊源版本進(jìn)行比較撕攒,
- 如果降級(jí)模塊源版本與
App
本地版本相同陡鹃,就下發(fā)降級(jí)包烘浦。 - 當(dāng)降級(jí)邏輯和升級(jí)邏輯同時(shí)滿足條件時(shí),只啟用降級(jí)邏輯萍鲸。