Hybird App離線快取系統

2021-09-16 21:42:37 字數 2841 閱讀 5436

offlineresourceinfo介面請求方法:postofflineresourceinfo介面請求引數:

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,...