客戶端熱更新機制實現(xiàn)
客戶端和服務(wù)器端各自維護兩個版本描述文件:
來自chcp.json
:
{
"server_urls": [
"192.168.1.251",
"192.168.1.250",
"192.168.1.106",
"192.168.1.241",
"192.168.1.110"
],
"release": "2017.07.16-18.54.39"
}
來自chcp.manifest
:
[
{
"file": "50x.html",
"hash": "d74f9cdd604653c22c6752c46fffd587"
},
{
"file": "index.html",
"hash": "4279d6e7f61095181041d9ac9733a1e6"
}
]
文件命名主要參考Cordova
熱更新插件呛每,之所以用它的規(guī)范拾氓,主要是起初想用它實現(xiàn)一部分終端的熱更新,但是后來決定不用了泉瞻,但命名規(guī)則保留了。
chcp.json
中維護兩個屬性苞冯,一個是服務(wù)器列表袖牙,一個是當前版本;chcp.manifest
中維護當前每個文件及其散列值抱完。
更新邏輯:
- 客戶端(下稱Client)根據(jù)本地
chcp.json
中的服務(wù)器列表贼陶,向服務(wù)器請求服務(wù)端的chcp.json
文件。 - 獲得服務(wù)器的
chcp.json
文件后,首先更新本地的服務(wù)器列表碉怔。 - 對比本地主版本號與服務(wù)器端主版本號烘贴。
- 如果一樣,進入程序主頁
- 如果不一樣撮胧,下載服務(wù)器端
chcp.manifest
文件桨踪。 - 對比本地
chcp.manifest
文件與服務(wù)器端chcp.manifest
文件的差異:- 記錄只有本地才有的文件名,這些文件待刪除芹啥。
- 記錄只有服務(wù)器端才有的文件名锻离,這些文件帶下載。
- 本地和服務(wù)器端一致的文件墓怀,對比其散列值汽纠,如果一致,不作操作傀履,如果不一致虱朵,刪除本地文件,下載服務(wù)器端文件钓账。