offlineresourceinfo
介面請求方法:post
offlineresourceinfo
介面請求引數:
json 形式:
,,]
}
form 表單形式:
resourcenames=m,coach,activity&resourceversions=1.0.0,1.0.0,1.0.0
offlineresourceinfo
介面返回結構體:
,]}
}
引數說明:
"name": 模組名
"version": 公升級版本
"md5": 資源包 md5
"isfull": 是否是全量公升級包
增量和全量公升級包擁有同樣的結構,包含config.json
檔案和資源檔案。
config.json
格式如下,version
記錄的是下發的資源版本號,validate
記錄的是所有檔案的路勁和相應的md5 hash
值。
,]
}
具體的資源與config.json
平級。
--[528]
按模組目錄存放資源包。其中目錄moduleszip
用於存放資源壓縮包的路徑,目錄modules
用於存放解壓後的壓縮包路徑。
所以每次請求offlineresourceinfo
介面的時候,也需要遍歷所有模組目錄下的config.json
去獲取資源版本號。所以第一次請求的話,由於本地目錄是空的,對於介面offlineresourceinfo
的引數resourceversionlist
也是空的。
--[offlineresource]
----[moduleszip]
------[m]
--------[zip]
----------m.update.1.0.0_1.0.1.zip
----------m.full.1.0.1.zip
--------[temp] 解壓臨時目錄
--------[backup] 原有資源備份目錄
------[coach]
--------[zip]
----------coach.update.1.0.0_1.0.1.zip
----------coach.full.1.0.1.zip
--------[temp] 解壓臨時目錄
--------[backup] 原有資源備份目錄
----[modules]
------[m]
--------config.json
--------其他資源檔案
------[coach]
--------config.json
--------其他資源檔案
----[modulesflag]
------[m]
--------flag.json
------[coach]
--------flag.json
解壓
校驗子檔案過程:需要結合config.json
和資源來校驗每個檔案的合法性,如果不合法,就不新增該資源檔案 就不保留整個資源包。
更新資源
增量更新:檔案的替換和增加。而且需要合併新老config.json
。
全量更新:覆蓋模組目錄。
模組資源包更新之前,需要先備份之前的模組資源。例如:拷貝目錄offlineresource/modules/m
到目錄offlineresource/moduleszip/m/backup
來進行備份。
容錯處理
需要設定標誌位,並持久化到flag.json
:
正在公升級的過程包括,md5
校驗資源包,md5
校驗每個資源檔案,備份和更新過程。
如果整個公升級過程中發生普通錯誤,恢復所有標誌位,然後結束公升級流程。
如果正在備份標誌位
也沒有復位 (備份失敗),此時並不會影響目標模組資源,直接恢復所有標誌位。
如果正在備份標誌位
已經復位 (備份成功),先清空目標模組資源,然後做回滾操作:
容錯***
公升級流程圖
只針對webview
的以***.com
為主網域名稱的請求進行攔截,然後根據請求鏈結,找到具體檔案快取。
找具體檔案快取的方式:
拿到快取檔案之後,需要再次校驗快取檔案的合法性,合法則使用快取,不合法就需要下面的容錯處理。如果找到的快取檔案已經損壞或者不存在(解壓過程被中斷,殺掉程序或者crash
),此時需要繼續走網路,並且把網路結果進行md5
校驗,如果合法,需要把該結果儲存到快取系統,如果不合法,不做處理。
離線快取manifest
1 在html檔案中的html標籤中加入如下屬性 2 demo.manifest檔案包含內容如下 cache manifest v1.0.0 需要快取的檔案 cache a.js b.css 不需要快取的檔案 network 無法訪問頁面 fallback 404.html 3 manifest檔案...
離線快取總結
離線快取 1.什麼是離線快取?離線快取 離線快取可以將站點的一些檔案快取到本地,它是瀏覽器自身的一種機制,將需要的檔案快取下來,以便後期即使沒有連線網路,被快取的頁面也可以展示 2.離線快取的優勢 1 在沒有網路的時候可以訪問到快取的對應的站點頁面,其中包括 html,css,js,img.2 在有...
離線快取 application cache
1,什麼是離線快取?離線快取可以將站點的一先檔案快取到本地,它是瀏覽器自己的一種機制,將需要的檔案快取下來,以便後期即使沒有連線網路,被快取的頁面也可以展示。列子 比如我們在手機或電腦上訪問乙個網頁,下一次訪問即使不連網也可以訪問,因為當我們第一次訪問的時候,瀏覽器已經把此時頁面給儲存到本地了。2,...