iOS开发实现资源包增量更新
??所謂資源包的增量更新是指,比如有一個資源包1.0版本, 現在如果升級到1.1本,那么只需要將1.0的版本信息發送給服務端,服務器端返回一個差分包。將這個差分包和本地的1.0的資源包進行合并生成1.1版本的資源包。
差分包增量更新的優勢
1)節約流量,降低耗電量
??之前每次升級都需要下載一個完整新版本資源包,現在每次升級只需要下載一個很小的差分包就可以了(ps:一般情況下,兩次迭代之間的資源包差別很小)。由于需要下載的文件小了很多,因此手機的耗電量也降了下來。
2)提高資源包更新成功率
??由于移動設備所處的環境網絡情況復雜多變,穩定性不可預測。因此較小的差分包可以較快的完成資源包的升級,同時下載時間的減少,也降低了網絡出錯的概率,可以有效的提高用戶資源包升級成功的概率。
差分包增量更新的劣勢
實現復雜,維護成本高
??為了實現差分包增量更新,客戶端需要有增加差分包合并邏輯。服務器端要有單獨的差分包服務,能夠進行差分運算,同時還要負責差分包的管理。如果1.0到n只有有n-1版本,那么差分包的數量非常龐大(n-1)的階乘個,因此有必要設置一個范圍,如果老版本差別較大,那么可以走全量包的邏輯。
差分包增量更新的使用場景
??差分包在iOS這邊的使用場景還是比較多的,比如混合開發框的web資源包,RN的資源包,weex資源包,以及需要定期迭代的資源包等。
感謝
??首先要感謝一位同行,在網上搜了好久,搜到了他的文章,省去了自己扣代碼的時間。原文如下:《iOS 使用bsdiff進行資源文件增量更新(bsdiff / bspatch)》
作者:老孟
??大家可以先看看上面這篇文章,大概思路就是,利用客戶端向服務器端發送請求,攜帶的必要參數有,客戶端當前的資源包A的版本號,資源包的唯一id信息等。服務器端根據當前最新的資源包A的版本號計算出一個差分包,然后將差分包返回給客戶端,以及文件簽名。客戶端拿到差分包后,進行差分包的合并操作,然后對合并后的資源包進行簽名,然后和服務器端的簽名進行比對,如果一致,就是用新的資源包。
?? 作者老孟的文章里有資源包差分,差分包合并操作的demo,大家感興趣可以看看。我下載了,簡單改了一下就可以運行起來了,修改后的demo下載地址:https://github.com/xindizhiyin2014/Bsdiff_demo
更多參考文章:
https://gist.github.com/9468305/fa8f1307ea4738225fca
https://github.com/cundong/SmartAppUpdates
備注:我們團隊主要是做一個人工智能視圖進行購物搜索的功能,人工智能文件。模型較大,因此通過差分包進行增量更新。大家對這一塊知識感興趣的,可以參考如下文章:
https://blog.csdn.net/best_coder/article/details/76201275
https://github.com/Tencent/TNN/blob/master/doc/cn/user/demo.md
https://github.com/pytorch/ios-demo-app
https://github.com/Tencent/ncnn
更多干貨文章,掃描下方二維碼關注公眾號
總結
以上是生活随笔為你收集整理的iOS开发实现资源包增量更新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卡西欧计算机算坐标步骤,卡西欧计算器坐标
- 下一篇: RNN学习笔记3-LSTM