專利名稱:WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng)及方法。
背景技術(shù):
隨著移動(dòng)互聯(lián)網(wǎng)的普及,手持設(shè)備被廣泛使用,以及HTML5等Web技術(shù)的快速發(fā)展,各大公司都在推出自己的WebApp開發(fā)框架。WebApp是指基于Web的系統(tǒng)和應(yīng)用,其作用是向廣大的最終用戶發(fā)布一組復(fù)雜的內(nèi)容和功能。從一個(gè)簡單的幫助消費(fèi)者計(jì)算汽車租借費(fèi)用的網(wǎng)頁,到為商業(yè)人員和度假者提供全套旅游服務(wù)的大型復(fù)雜的WEB站點(diǎn),都是WebApp。它包括一些完整的WEB站點(diǎn),WEB站點(diǎn)的專門功能以及在Internet、Intranet或ExtraNet上的信息處理應(yīng)用。用戶通常使用瀏覽器緩存在用戶磁盤上存儲(chǔ)web單頁,在用戶再次瀏覽的時(shí)候已節(jié)省帶寬,但即便這樣,依然無法在沒有Internet的情況下訪問Web應(yīng)用程序。為了讓web應(yīng)用程序在離線狀態(tài)也能被訪問,HTML5通過ApplicationCache提供離線存儲(chǔ)功能。Application Cache使用Manifest文件來指定當(dāng)前WebApp所需的資源,瀏覽器根據(jù)manifest文件的內(nèi)容來對(duì)不同的資源設(shè)置不同的策略。當(dāng)用戶再次瀏覽該網(wǎng)頁時(shí),如果Application Cache中存在該資源,貝U首先從Application Cache中加載,并通過對(duì)比本地manifest文件和服務(wù)器上的manifest文件來確定是否需要更新本地Cache的資源。Application Cache本質(zhì)上是一種靜態(tài)的Cache,需求用戶首先在manifest中指定所有需要Cache的資源,而不能根據(jù)用戶訪問的情況來Cache資源。在一些情況,開發(fā)者可能并不知道其所有的資源,例如用戶上傳的文件,因此此時(shí)不能通過manifest來指定。另外,在IE、FireFox等主流瀏覽器中還存在脫機(jī)模式,在離線情況下可以使用Cache在本地的網(wǎng)頁。但由于脫機(jī)模式是跟正常模式相對(duì)立的,因此在脫機(jī)模式下,即使網(wǎng)絡(luò)是可用的,也不能正常顯示沒有被Cache的外部網(wǎng)頁。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng)及方法,支持離線應(yīng)用的各類WebAPP,能將用戶訪問的WebAPP資源自動(dòng)Cache到本地,以確保用戶在離線情況下也能使用該WebAPP。為解決上述問題,本發(fā)明提供一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng),包括:存儲(chǔ)模塊,用于將用戶訪問過的每個(gè)WebAPP的資源Cache到本地保存;加載模塊,用于加載當(dāng)前WebAPP的資源,加載前先判斷當(dāng)前WebAPP的資源是否已經(jīng)被Cache到本地保存,若是,從所述存儲(chǔ)模塊保存的所有資源中加載當(dāng)前WebAPP的資源;若否,網(wǎng)絡(luò)加載當(dāng)前WebAPP的資源,并調(diào)用所述存儲(chǔ)模塊,將當(dāng)前WebAPP的資源Cache到本地保存;更新模塊,用于在所述加載模塊加載當(dāng)前WebAPP的資源完畢后,后臺(tái)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中。進(jìn)一步的,所述存儲(chǔ)模塊包括數(shù)據(jù)庫單元和緩存單元,所述緩存單元用于將用戶訪問過的每個(gè)WebAPP的資源Cache到本地并保存所述每個(gè)WebAPP的資源;所述數(shù)據(jù)庫單元用于標(biāo)識(shí)每個(gè)WebAPP的資源及其在所述緩存單元中的位置,建立每個(gè)WebAPP的索引信
肩、O進(jìn)一步的,所述數(shù)據(jù)庫單元采用SQLITE3數(shù)據(jù)庫,將每個(gè)WebAPP的資源的URL作為關(guān)鍵詞來標(biāo)識(shí)每個(gè)WebAPP的資源及其在所述緩存單元中的位置。進(jìn)一步的,所述緩存單元以文件方式保存所述每個(gè)WebAPP的資源,同時(shí)還保存所述每個(gè)WebAPP的http響應(yīng)信息。進(jìn)一步的,所述更新模塊通過http協(xié)議逐個(gè)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中,并在更新完成后,以JavaScript事件的形式通知所述當(dāng)前WebApp以切換到新的WebApp環(huán)境。相應(yīng)的,本發(fā)明還提供一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)方法,包括以下步驟:所述存儲(chǔ)模塊將用戶訪問過的每個(gè)WebAPP的資源Cache到本地保存;啟動(dòng)當(dāng)前WebAPP,所述加載模塊判斷當(dāng)前WebAPP的資源是否已經(jīng)被Cache到本地保存,若是,從所述存儲(chǔ)模塊保存的所有資源中加載當(dāng)前WebAPP的資源;若否,網(wǎng)絡(luò)加載當(dāng)前WebAPP的資源,并調(diào)用所述存儲(chǔ)模塊,將當(dāng)前WebAPP的資源Cache到本地保存;當(dāng)所述加載模塊加載當(dāng)前WebAPP的資源完畢后,所述更新模塊后臺(tái)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中。與現(xiàn)有技術(shù)相比,本發(fā)明提供的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng)及方法,通過存儲(chǔ)模塊將用戶訪問過的每個(gè)WebAPP的資源Cache到本地保存,然后通過加載模塊脫機(jī)加載存儲(chǔ)模塊中的已有WebAPP資源或者網(wǎng)絡(luò)加載未Cache存儲(chǔ)的WebAPP資源,再通過更新模塊更新存儲(chǔ)模塊中的WebAPP的資源,能將用戶訪問的WebAPP資源自動(dòng)Cache到本地,以確保用戶在離線情況下也能使用該WebAPP,可以實(shí)現(xiàn)WebApp離線和在線方式的無痕切換,適用于支持離線應(yīng)用的各類WebAPP。
圖1是本發(fā)明一實(shí)施例的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng)的架構(gòu)示意圖;圖2是本發(fā)明一實(shí)施例的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)方法的流程圖。
具體實(shí)施例方式本發(fā)明中,URL (統(tǒng)一資源定位符,UniformResourceLocator)也被稱為網(wǎng)頁地址,是因特網(wǎng)上標(biāo)準(zhǔn)的資源的地址;以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明提出的WebAPP管理系統(tǒng)及其應(yīng)用方法作進(jìn)一步詳細(xì)說明。如圖1所示,本發(fā)明提供一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng),包括存儲(chǔ)模塊11、加載模塊12和更新模塊13。存儲(chǔ)模塊11包括數(shù)據(jù)庫單元111和緩存單元112,所述緩存單元112用于將用戶訪問過的每個(gè)WebAPP的資源Cache到本地并以文件方式保存所述每個(gè)WebAPP的資源,同時(shí)還保存所述每個(gè)WebAPP的http響應(yīng)信息;所述數(shù)據(jù)庫單元111用于標(biāo)識(shí)每個(gè)WebAPP的資源及其在所述緩存單元中的位置,建立每個(gè)WebAPP的索引信息。其中,HTTP響應(yīng)與HTTP請(qǐng)求相似,由3部分構(gòu)成,分別是協(xié)議和狀態(tài)碼、響應(yīng)頭和響應(yīng)正文。HTTP響應(yīng)的第I行表示通信使用的協(xié)議及其版本、狀態(tài)碼和狀態(tài)描述。其中的狀態(tài)碼是規(guī)定好的;HTTP響應(yīng)頭中包含了很多關(guān)于服務(wù)器端的有用信息,如服務(wù)器的類型、內(nèi)容類型和長度等信息;響應(yīng)正文就是用戶在瀏覽網(wǎng)頁時(shí)看到的內(nèi)容,可以包含各種信息,包括文字、圖片和動(dòng)畫等。在Web框架(Web Frameffork)中,用于標(biāo)識(shí)WebApp的方法有很多,包括使用name、類似域名的ID方式、以及URL等。經(jīng)過試驗(yàn),使用URL方式比較簡潔、方便,故本實(shí)施中數(shù)據(jù)庫單元111采用URL來標(biāo)識(shí)WebApp。在計(jì)算機(jī)技術(shù)中,實(shí)現(xiàn)索引查詢的方法很多,有基于文件的,基于數(shù)據(jù)庫的。其中基于數(shù)據(jù)庫的比較常見,本實(shí)施例中數(shù)據(jù)庫單元111采用SQLITE3數(shù)據(jù)庫來保存緩存單元112中存在的WebApp索引以及每個(gè)WebApp所包含的資源,并以WebApp的主資源URL作為關(guān)鍵詞來標(biāo)識(shí)WebApp,每個(gè)WebApp內(nèi)部使用的資源使用其對(duì)應(yīng)的URL來加以區(qū)分,同時(shí)還保存了所有資源在緩存單元112中的位置。因此,緩存單元112完成將WebApp資源Cache到本地后,通過數(shù)據(jù)庫單元111來加以索引,用于加載單元12加載WebApp時(shí)查詢需要的資源。加載模塊12用于加載當(dāng)前WebAPP的資源,加載前先判斷當(dāng)前WebAPP的資源是否已經(jīng)被Cache到本地保存,若是,從所述存儲(chǔ)模塊11保存的所有資源中加載當(dāng)前WebAPP的資源;若否,網(wǎng)絡(luò)加載當(dāng)前WebAPP的資源,并調(diào)用所述存儲(chǔ)模塊11,將當(dāng)前WebAPP的資源Cache到本地保存。本實(shí)施例中,加載模塊12加載已經(jīng)被Cache到本地保存的當(dāng)前WebAPP的資源時(shí),將當(dāng)前WebApp主資源的URL作為關(guān)鍵詞,從數(shù)據(jù)庫單元111中找出當(dāng)前WebApp緩存在緩存單元112的所有資源的位置,接著依照HTML解析過程中按需加載緩存單元112中的資源;加載模塊12通過網(wǎng)絡(luò)HTTP加載當(dāng)前WebAPP的資源時(shí),調(diào)用存儲(chǔ)模塊11存儲(chǔ)當(dāng)前WebApp已經(jīng)下載的所有資源到緩存單元112中,并隨著HTML解析的進(jìn)行,繼續(xù)存儲(chǔ)后續(xù)資源到緩存單元112中,數(shù)據(jù)庫單元111為存儲(chǔ)到緩存單元112中的當(dāng)前WebApp資源加以標(biāo)識(shí)和索引。更新模塊13在所述加載模塊加載當(dāng)前WebAPP的資源完畢后,后臺(tái)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中。本實(shí)施例中,所述更新模塊13根據(jù)WebApp主資源的URL獲取其所有資源的URL,通過http協(xié)議逐個(gè)與緩存單元112中的資源對(duì)比,如果存在更新則替換當(dāng)前資源,并在所有資源都更新完成后,以JavaScript事件的形式通知所述當(dāng)前WebApp用戶可以選擇切換到新的WebApp環(huán)境。相應(yīng)的,如圖2所示,本發(fā)明還提供一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)方法,包括以下步驟。S21,所述存儲(chǔ)模塊11將用戶訪問過的每個(gè)WebAPP的資源Cache到本地保存;S22,啟動(dòng)當(dāng)前 WebAPP ;S23,所述加載模塊判斷當(dāng)前WebAPP的資源是否已經(jīng)被Cache到本地保存,若是,執(zhí)行S24 ;若否,執(zhí)行S25至S26 ;S24,從所述存儲(chǔ)模塊保存的所有資源中加載當(dāng)前WebAPP的資源;S25,網(wǎng)絡(luò)加載當(dāng)前WebAPP的資源;S26,調(diào)用所述存儲(chǔ)模塊,將當(dāng)前WebAPP的資源Cache到本地保存;S27,所述加載模塊加載當(dāng)前WebAPP的資源完畢;S28,所述更新模塊后臺(tái)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中。本實(shí)施步驟S21中,存儲(chǔ)模塊11包括數(shù)據(jù)庫單元111和緩存單元112,所述緩存單元112將用戶訪問過的每個(gè)WebAPP的資源Cache到本地,并以文件方式保存所述每個(gè)WebAPP的資源,同時(shí)還保存所述每個(gè)WebAPP的http響應(yīng)信息;所述數(shù)據(jù)庫單元111采用URL標(biāo)識(shí)每個(gè)WebAPP的資源及其在所述緩存單元中的位置,建立每個(gè)WebAPP的索引信息。本實(shí)施步驟S24中,加載模塊12加載將當(dāng)前WebApp主資源的URL作為關(guān)鍵詞,從數(shù)據(jù)庫單元111中找出當(dāng)前WebApp緩存在緩存單元112的所有資源的位置,接著依照HTML解析過程中按需加載緩存單元112中的資源。本實(shí)施步驟S25中,加載模塊12通過網(wǎng)絡(luò)HTTP加載當(dāng)前WebAPP的資源,步驟S26中調(diào)用存儲(chǔ)模塊11存儲(chǔ)當(dāng)前WebApp已經(jīng)下載的所有資源到緩存單元112中,并隨著HTML解析的進(jìn)行,繼續(xù)存儲(chǔ)后續(xù)資源到緩存單元112中,數(shù)據(jù)庫單元111為存儲(chǔ)到緩存單元112中的當(dāng)前WebApp資源加以標(biāo)識(shí)和索引。綜上所述,本發(fā)明提供的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng)及方法,通過存儲(chǔ)模塊將用戶訪問過的每個(gè)WebAPP的資源Cache到本地保存,然后通過加載模塊脫機(jī)加載存儲(chǔ)模塊中的已有WebAPP資源或者網(wǎng)絡(luò)加載未Cache存儲(chǔ)的WebAPP資源,再通過更新模塊更新存儲(chǔ)模塊中的WebAPP的資源,能將用戶訪問的WebAPP資源自動(dòng)Cache到本地,以確保用戶在離線情況下也能使用該WebAPP,可以實(shí)現(xiàn)WebApp離線和在線方式的無痕切換,適用于支持離線應(yīng)用的各類WebAPP。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng),其特征在于,包括: 存儲(chǔ)模塊,用于將用戶訪問過的每個(gè)WebAPP的資源Cache到本地保存; 加載模塊,用于加載當(dāng)前WebAPP的資源,加載前先判斷當(dāng)前WebAPP的資源是否已經(jīng)被Cache到本地保存,若是,從所述存儲(chǔ)模塊保存的所有資源中加載當(dāng)前WebAPP的資源;若否,網(wǎng)絡(luò)加載當(dāng)前WebAPP的資源,并調(diào)用所述存儲(chǔ)模塊,將當(dāng)前WebAPP的資源Cache到本地保存; 更新模塊,用于在所述加載模塊加載當(dāng)前WebAPP的資源完畢后,后臺(tái)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中。
2.如權(quán)利要求1所述的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng),其特征在于,所述存儲(chǔ)模塊包括數(shù)據(jù)庫單元和緩存單元,所述緩存單元用于將用戶訪問過的每個(gè)WebAPP的資源Cache到本地并保存所述每個(gè)WebAPP的資源;所述數(shù)據(jù)庫單元用于標(biāo)識(shí)每個(gè)WebAPP的資源及其在所述緩存單元中的位置,建立每個(gè)WebAPP的索引信息。
3.如權(quán)利要求2所述的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng),其特征在于,所述數(shù)據(jù)庫單元采用SQLITE3數(shù)據(jù)庫,將每個(gè)WebAPP的資源的URL作為關(guān)鍵詞來標(biāo)識(shí)每個(gè)WebAPP的資源及其在所述緩存單元中的位置。
4.如權(quán)利要求2所述的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng),其特征在于,所述緩存單元以文件方式保存所述每個(gè)WebAPP的資源,同時(shí)還保存所述每個(gè)WebAPP的http響應(yīng)信息。
5.如權(quán)利要求1所述的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng),其特征在于,所述更新模塊通過http協(xié)議逐個(gè)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中,并在更新完成后,以JavaScript事件的形式通知所述當(dāng)前WebApp以切換到新的WebApp環(huán)境。
6.一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)方法,其特征在于,包括: 所述存儲(chǔ)模塊將用戶訪問過的每個(gè)WebAPP的資源Cache到本地保存; 啟動(dòng)當(dāng)前WebAPP,所述加載模塊判斷當(dāng)前WebAPP的資源是否已經(jīng)被Cache到本地保存,若是,從所述存儲(chǔ)模塊保存的所有資源中加載當(dāng)前WebAPP的資源;若否,網(wǎng)絡(luò)加載當(dāng)前WebAPP的資源,并調(diào)用所述存儲(chǔ)模塊,將當(dāng)前WebAPP的資源Cache到本地保存; 當(dāng)所述加載模塊加載當(dāng)前WebAPP的資源完畢后,所述更新模塊后臺(tái)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中。
7.如權(quán)利要求6所述的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)方法,其特征在于,所述存儲(chǔ)模塊包括數(shù)據(jù)庫單元和緩存單元,所述緩存單元用于將用戶訪問過的每個(gè)WebAPP的資源Cache到本地并保存所述每個(gè)WebAPP的資源;所述數(shù)據(jù)庫單元用于標(biāo)識(shí)每個(gè)WebAPP的資源及其在所述緩存單元中的位置,建立每個(gè)WebAPP的索引信息。
8.如權(quán)利要求7所述的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)方法,其特征在于,所述數(shù)據(jù)庫單元采用SQLITE3數(shù)據(jù)庫,將每個(gè)WebAPP的資源的URL作為關(guān)鍵詞來標(biāo)識(shí)每個(gè)WebAPP的資源及其在所述緩存單元中的位置。
9.如權(quán)利要求7所述的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)方法,其特征在于,所述緩存單元以文件方式保存所述每個(gè)WebAPP的資源,同時(shí)還保存所述每個(gè)WebAPP的http響應(yīng)信息。
10.如權(quán)利要求6所述的WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)方法,其特征在于,所述更新模塊通過http協(xié)議逐個(gè)更新所述當(dāng)前WebAPP的資源到所述存儲(chǔ)模塊中,并在更新完成后,以JavaScript事件的形式通知所述當(dāng)前WebApp以切換到新的WebApp環(huán)境。
全文摘要
本發(fā)明提供一種WebAPP動(dòng)態(tài)脫機(jī)存儲(chǔ)系統(tǒng)及方法,通過存儲(chǔ)模塊將用戶訪問過的每個(gè)WebAPP的資源Cache到本地保存,然后通過加載模塊脫機(jī)加載存儲(chǔ)模塊中的已有WebAPP資源或者網(wǎng)絡(luò)加載未Cache存儲(chǔ)的WebAPP資源,再通過更新模塊更新存儲(chǔ)模塊中的WebAPP的資源,能將用戶訪問的WebAPP資源自動(dòng)Cache到本地,以確保用戶在離線情況下也能使用該WebAPP,可以實(shí)現(xiàn)WebApp離線和在線方式的無痕切換,適用于支持離線應(yīng)用的各類WebAPP。
文檔編號(hào)G06F17/30GK103186594SQ20111045413
公開日2013年7月3日 申請(qǐng)日期2011年12月29日 優(yōu)先權(quán)日2011年12月29日
發(fā)明者呂磊 申請(qǐng)人:盛樂信息技術(shù)(上海)有限公司