一種客戶端頁面顯示方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本申請涉及移動互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種客戶端頁面顯示方法和裝置。本 申請同時(shí)涉及一種更新客戶端頁面的方法和裝置,以及一種客戶端頁面顯示系統(tǒng)。
【背景技術(shù)】
[0002] 隨著移動互聯(lián)網(wǎng)技術(shù)不斷發(fā)展,企業(yè)需要選擇一個(gè)為將來而使用的能夠滿足多種 不同層面需求的移動開發(fā)模式。目前,移動開發(fā)模式包括原生開發(fā)模式、Web開發(fā)模式和混 合開發(fā)模式。其中,混合模式移動應(yīng)用(HybridApp)是同時(shí)采用網(wǎng)頁語言與程序語言進(jìn)行 開發(fā),通過不同的應(yīng)用商店進(jìn)行打包與分發(fā),應(yīng)用的特性更接近原生應(yīng)用(NativeApp)而 且又區(qū)別于Web應(yīng)用(WebApp)。但是,在HybridApp開發(fā)過程中,由于同時(shí)使用了網(wǎng)頁語 言,所以開發(fā)成本與難度大大降低。也就是說,HybridApp兼具了NativeApp與WebApp 兩者的諸多優(yōu)點(diǎn)。目前已經(jīng)有眾多HybridApp開發(fā)成功應(yīng)用,比如百度、網(wǎng)易、街旁等知名 移動應(yīng)用,都是采用HybridApp開發(fā)模式。
[0003] 在HybridApp中,客戶端對頁面進(jìn)行緩存管理,以便提高頁面顯示速度,從而增強(qiáng) 用戶體驗(yàn)。一個(gè)頁面包括頁面結(jié)構(gòu)和動態(tài)數(shù)據(jù)兩部分,傳統(tǒng)的,對頁面進(jìn)行緩存是對頁面的 整體進(jìn)行緩存,并不區(qū)分頁面結(jié)構(gòu)和動態(tài)數(shù)據(jù)。當(dāng)客戶端顯示頁面時(shí),客戶端是通過一次 額外的請求服務(wù)器端,返回是否需要更新頁面,如果服務(wù)器端回傳需要更新的信號,客戶端 再次請求服務(wù)器端返回整個(gè)頁面的數(shù)據(jù),根據(jù)返回的整個(gè)頁面的數(shù)據(jù),顯示頁面,并且更新 頁面的緩存;如果不需要更新,則繼續(xù)使用原有的緩存在客戶端的整個(gè)頁面的數(shù)據(jù),顯示頁 面。采用這種頁面顯示的方式,存在以下問題:
[0004] 1)客戶端頁面緩存重復(fù)使用率較低
[0005] 由于HybridApp有大量頁面信息需要從服務(wù)器端動態(tài)獲取,傳統(tǒng)的方式將整個(gè)頁 面緩存在客戶端,這個(gè)緩存重復(fù)使用率較低,因?yàn)橐坏╉撁娼Y(jié)構(gòu)和動態(tài)數(shù)據(jù)其中一個(gè)改動, 就需要將整個(gè)頁面重新從服務(wù)器端請求。
[0006] 2)客戶端性能消耗大
[0007] 由于頻繁的從服務(wù)器端請求頁面信息,客戶端就要頻繁的重新將頁面轉(zhuǎn)換成客戶 端本地對象,再將本地對象渲染到頁面上,這個(gè)過程會消耗客戶端大量的性能。
[0008] 3)消耗大量網(wǎng)絡(luò)流量、用戶體驗(yàn)差
[0009] 由于頻繁的從服務(wù)器端請求頁面信息,會給用戶帶來大量的流量費(fèi)用,甚至在網(wǎng) 絡(luò)狀況不好的情況下(移動設(shè)備網(wǎng)絡(luò)情況通常會在wifi、3G、2G、GPRS情況下切換),會帶來 交互阻塞、畫面不流暢等不良體驗(yàn)。
[0010] 因此,現(xiàn)有技術(shù)無法對動態(tài)數(shù)據(jù)和頁面結(jié)構(gòu)分別進(jìn)行更新,而只能對整個(gè)頁面進(jìn) 行更新,由此帶來客戶端頁面緩存重復(fù)使用率較低、客戶端性能消耗大以及消耗大量網(wǎng)絡(luò) 流量、用戶體驗(yàn)差的問題。
【發(fā)明內(nèi)容】
[0011] 本申請?zhí)峁┮环N客戶端頁面顯示方法和裝置,以解決現(xiàn)有技術(shù)無法對動態(tài)數(shù)據(jù)和 頁面結(jié)構(gòu)分別進(jìn)行更新的問題。本申請另外提供一種更新客戶端頁面的方法和裝置,以及 一種客戶端頁面顯示系統(tǒng)。
[0012] 本申請?zhí)峁┮环N客戶端頁面顯示方法,用于混合模式移動應(yīng)用程序,包括:
[0013] 接收用戶發(fā)送的頁面訪問請求;
[0014] 根據(jù)所述頁面訪問請求,獲取所述頁面的頁面標(biāo)識;
[0015] 根據(jù)所述頁面標(biāo)識,獲取本地預(yù)存的所述頁面的動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識和頁面結(jié)構(gòu) 的驗(yàn)證標(biāo)識;
[0016] 將所述頁面標(biāo)識、所述動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識和頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識發(fā)送到服務(wù)器 端,向所述服務(wù)器端請求所述頁面的動態(tài)數(shù)據(jù)和頁面結(jié)構(gòu)兩部分中的更新部分;
[0017] 接收服務(wù)器端回送的應(yīng)答;
[0018] 由所述服務(wù)器端回送的應(yīng)答和本地預(yù)存的頁面部分中,選擇當(dāng)前版本最新的動態(tài) 數(shù)據(jù)和頁面結(jié)構(gòu),生成并渲染所述頁面;
[0019] 其中,所述驗(yàn)證標(biāo)識用于表征動態(tài)數(shù)據(jù)和頁面結(jié)構(gòu)的更新狀況。
[0020] 可選的,所述本地預(yù)存的所述頁面存儲在客戶端緩存區(qū)域。
[0021] 可選的,所述本地預(yù)存的所述頁面包括:所述頁面的動態(tài)數(shù)據(jù)和所述動態(tài)數(shù)據(jù)的 驗(yàn)證標(biāo)識,以及所述頁面結(jié)構(gòu)的本地對象和所述頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識,所述頁面的動態(tài)數(shù) 據(jù)、所述動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識、所述頁面結(jié)構(gòu)的本地對象以及所述頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識分 離存儲。
[0022] 可選的,所述生成并渲染所述頁面采用以下規(guī)則之一:
[0023] 若所述應(yīng)答為無更新應(yīng)答,則獲取所述本地預(yù)存的所述頁面中的所述頁面結(jié)構(gòu)的 本地對象和所述動態(tài)數(shù)據(jù),將所述本地預(yù)存的所述動態(tài)數(shù)據(jù)中的所有數(shù)據(jù)項(xiàng)替換到所述本 地預(yù)存的所述頁面結(jié)構(gòu)的本地對象,渲染所述本地對象;
[0024] 若所述應(yīng)答只包括所述動態(tài)數(shù)據(jù),則獲取所述本地預(yù)存的所述頁面中的所述頁面 結(jié)構(gòu)的本地對象,將所述服務(wù)器端的所述動態(tài)數(shù)據(jù)中的所有數(shù)據(jù)項(xiàng)替換到所述本地預(yù)存的 所述頁面結(jié)構(gòu)的本地對象,渲染所述本地對象;
[0025] 若所述應(yīng)答只包括所述頁面結(jié)構(gòu),則將所述服務(wù)器端的所述頁面結(jié)構(gòu)渲染成本地 對象,獲取所述本地預(yù)存的所述頁面中的所述動態(tài)數(shù)據(jù),將所述本地預(yù)存的所述動態(tài)數(shù)據(jù) 中的所有數(shù)據(jù)項(xiàng)替換到所述本地對象,渲染所述本地對象;
[0026] 若所述應(yīng)答包括所述動態(tài)數(shù)據(jù)和所述頁面結(jié)構(gòu),則將所述服務(wù)器端的所述頁面結(jié) 構(gòu)渲染成本地對象,將所述服務(wù)器端的所述動態(tài)數(shù)據(jù)中的所有數(shù)據(jù)項(xiàng)替換到所述本地對 象,渲染所述本地對象。
[0027] 可選的,還包括:根據(jù)所述服務(wù)器端回送的應(yīng)答,更新所述本地預(yù)存的所述頁面。
[0028] 可選的,所述更新所述本地預(yù)存的所述頁面采用以下規(guī)則之一:
[0029] 若所述服務(wù)器端回送的應(yīng)答是否包括所述動態(tài)數(shù)據(jù),則將所述本地預(yù)存的所述頁 面的所述動態(tài)數(shù)據(jù)和所述動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識替換為所述服務(wù)器端的所述動態(tài)數(shù)據(jù)和所 述動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識;
[0030] 若所述服務(wù)器端回送的應(yīng)答是否包括所述頁面結(jié)構(gòu),則將所述本地預(yù)存的所述頁 面的所述頁面結(jié)構(gòu)的本地對象和所述頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識替換為所述服務(wù)器端的所述頁 面結(jié)構(gòu)的本地對象和所述頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識。
[0031] 相應(yīng)的,本申請還提供一種客戶端頁面顯示裝置,用于混合模式移動應(yīng)用程序,包 括:
[0032] 第一接收單元,用于接收用戶發(fā)送的頁面訪問請求;
[0033] 第一獲取單元,用于根據(jù)所述頁面訪問請求,獲取所述頁面的頁面標(biāo)識;
[0034] 第二獲取單元,用于根據(jù)所述頁面標(biāo)識,獲取本地預(yù)存的所述頁面的動態(tài)數(shù)據(jù)的 驗(yàn)證標(biāo)識和頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識;
[0035] 第一發(fā)送單元,用于將所述頁面標(biāo)識、所述動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識和頁面結(jié)構(gòu)的驗(yàn) 證標(biāo)識發(fā)送到服務(wù)器端,向所述服務(wù)器端請求所述頁面的動態(tài)數(shù)據(jù)和頁面結(jié)構(gòu)兩部分中的 更新部分;
[0036] 第二接收單元,用于接收服務(wù)器端回送的應(yīng)答;
[0037] 生成渲染單元,用于由所述服務(wù)器端回送的應(yīng)答和本地預(yù)存的頁面部分中,選擇 當(dāng)前版本最新的動態(tài)數(shù)據(jù)和頁面結(jié)構(gòu),生成并渲染所述頁面;
[0038] 其中,所述驗(yàn)證標(biāo)識用于表征動態(tài)數(shù)據(jù)和頁面結(jié)構(gòu)的更新狀況。
[0039] 可選的,所述本地預(yù)存的所述頁面存儲在客戶端緩存區(qū)域。
[0040] 可選的,所述本地預(yù)存的所述頁面包括:所述頁面的動態(tài)數(shù)據(jù)和所述動態(tài)數(shù)據(jù)的 驗(yàn)證標(biāo)識,以及所述頁面結(jié)構(gòu)的本地對象和所述頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識,所述頁面的動態(tài)數(shù) 據(jù)、所述動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識、所述頁面結(jié)構(gòu)的本地對象以及所述頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識分 離存儲。
[0041] 可選的,所述生成并渲染所述頁面采用以下規(guī)則之一:
[0042] 若所述應(yīng)答為無更新應(yīng)答,則獲取所述本地預(yù)存的所述頁面中的所述頁面結(jié)構(gòu)的 本地對象和所述動態(tài)數(shù)據(jù),將所述本地預(yù)存的所述動態(tài)數(shù)據(jù)中的所有數(shù)據(jù)項(xiàng)替換到所述本 地預(yù)存的所述頁面結(jié)構(gòu)的本地對象,渲染所述本地對象;
[0043] 若所述應(yīng)答只包括所述動態(tài)數(shù)據(jù),則獲取所述本地預(yù)存的所述頁面中的所述頁面 結(jié)構(gòu)的本地對象,將所述服務(wù)器端的所述動態(tài)數(shù)據(jù)中的所有數(shù)據(jù)項(xiàng)替換到所述本地預(yù)存的 所述頁面結(jié)構(gòu)的本地對象,渲染所述本地對象;
[0044] 若所述應(yīng)答只包括所述頁面結(jié)構(gòu),則將所述服務(wù)器端的所述頁面結(jié)構(gòu)渲染成本地 對象,獲取所述本地預(yù)存的所述頁面中的所述動態(tài)數(shù)據(jù),將所述本地預(yù)存的所述動態(tài)數(shù)據(jù) 中的所有數(shù)據(jù)項(xiàng)替換到所述本地對象,渲染所述本地對象;
[0045] 若所述應(yīng)答包括所述動態(tài)數(shù)據(jù)和所述頁面結(jié)構(gòu),則將所述服務(wù)器端的所述頁面結(jié) 構(gòu)渲染成本地對象,將所述服務(wù)器端的所述動態(tài)數(shù)據(jù)中的所有數(shù)據(jù)項(xiàng)替換到所述本地對 象,渲染所述本地對象。
[0046] 可選的,所述裝置還包括:
[0047] 更新本地存儲單元,用于根據(jù)所述服務(wù)器端回送的應(yīng)答,更新所述本地預(yù)存的所 述頁面。
[0048] 可選的,所述更新所述本地預(yù)存的所述頁面采用以下規(guī)則之一:
[0049] 若所述服務(wù)器端回送的應(yīng)答是否包括所述動態(tài)數(shù)據(jù),則將所述本地預(yù)存的所述頁 面的所述動態(tài)數(shù)據(jù)和所述動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識替換為所述服務(wù)器端的所述動態(tài)數(shù)據(jù)和所 述動態(tài)數(shù)據(jù)的驗(yàn)證標(biāo)識;
[0050] 若所述服務(wù)器端回送的應(yīng)答是否包括所述頁面結(jié)構(gòu),則將所述本地預(yù)存的所述頁 面的所述頁面結(jié)構(gòu)的本地對象和所述頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識替換為所述服務(wù)器端的所述頁 面結(jié)構(gòu)的本地對象和所述頁面結(jié)構(gòu)的驗(yàn)證標(biāo)識。
[0051] 此外,本申請還提供一種更新客戶端頁面的方