一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明設(shè)計(jì)信息數(shù)字化處理技術(shù)領(lǐng)域,尤其涉及一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法及系統(tǒng)。
【背景技術(shù)】
[0002]電子書(shū)籍已在各個(gè)系統(tǒng)中被廣泛使用,除了常見(jiàn)的簡(jiǎn)單閱讀場(chǎng)景(例如用AcrobatReader閱讀PDF文件等),在一些特定的場(chǎng)景下,電子書(shū)籍的使用有不同的特點(diǎn)和擴(kuò)展。例如在很多多媒體教學(xué)軟件/系統(tǒng)中,通常有電子課本、教輔等電子書(shū)籍的閱讀、學(xué)習(xí)、教學(xué)環(huán)節(jié)。在這些場(chǎng)景中,除了通常的閱讀書(shū)籍內(nèi)容,系統(tǒng)還會(huì)提供很多與當(dāng)前書(shū)本內(nèi)容相關(guān)的視頻、圖像、文本、動(dòng)畫(huà)等多媒體資源,供讀者進(jìn)行擴(kuò)展閱讀與學(xué)習(xí)。
[0003]如圖1所示的多媒體教學(xué)系統(tǒng)就是這類(lèi)多媒體教學(xué)軟件中的一種。通常,系統(tǒng)一般有以下2種方式提供這些資源:1.將資源和資源列表數(shù)據(jù)都內(nèi)嵌在書(shū)籍中,讀者可以直接瀏覽。2.書(shū)籍上只提供一個(gè)資源列表,真正的資源和資源列表數(shù)據(jù)放在互聯(lián)網(wǎng)上,讀者需要瀏覽、使用某資源時(shí),通過(guò)拖拽、點(diǎn)擊等形式從互聯(lián)網(wǎng)上下載后使用。
[0004]上述的方式1,優(yōu)點(diǎn)是可以實(shí)時(shí)使用資源和資源列表數(shù)據(jù),無(wú)需下載;在網(wǎng)絡(luò)條件不好甚至無(wú)網(wǎng)絡(luò)等情況下尤為有利。缺點(diǎn)是將資源和資源列表數(shù)據(jù)嵌入書(shū)籍中,造成電子書(shū)籍體積龐大,這在資料數(shù)量大時(shí)尤為突出;此外該方式的另一個(gè)缺點(diǎn)是資源固化,即每本書(shū)籍?dāng)y帶的資源是固定的,很難動(dòng)態(tài)變化。
[0005]方式2的優(yōu)點(diǎn)是附加的資源不會(huì)額外占用電子書(shū)籍的尺寸,且電子書(shū)籍對(duì)應(yīng)的資源是動(dòng)態(tài)可變的,只要服務(wù)器端設(shè)置不同的關(guān)聯(lián)資源,客戶(hù)端看見(jiàn)的資源列表自然就變化了。因此采用方式2在很多系統(tǒng)中都是常見(jiàn)的方式。方式2的缺點(diǎn)主要表現(xiàn)在:真正的資源文件是以在線的方式存在,首先用戶(hù)使用時(shí)需要下載,實(shí)時(shí)性差;其次是列出當(dāng)前書(shū)頁(yè)/章節(jié)對(duì)應(yīng)的資源有哪些時(shí),也需要向服務(wù)器提交查詢(xún)請(qǐng)求,現(xiàn)查詢(xún)數(shù)據(jù)(如圖2所示);當(dāng)用戶(hù)快速翻頁(yè)時(shí),如果要實(shí)時(shí)獲得當(dāng)前頁(yè)/章節(jié)對(duì)應(yīng)的資源列表,就需要不停第向服務(wù)器端請(qǐng)求數(shù)據(jù)。容易看出,這種方式對(duì)系統(tǒng)的資源占用嚴(yán)重。這種占用表現(xiàn)在幾個(gè)個(gè)方面,1、客戶(hù)端可能會(huì)以較高的頻率請(qǐng)求資源列表數(shù)據(jù)(例如用戶(hù)進(jìn)行快速翻頁(yè)等動(dòng)作),則對(duì)網(wǎng)絡(luò)帶寬的占用嚴(yán)重。這種占用既表現(xiàn)在發(fā)送請(qǐng)求時(shí)對(duì)帶寬的占用,更表現(xiàn)在服務(wù)器端返回請(qǐng)求數(shù)據(jù)時(shí)(通常返回的數(shù)據(jù)量比請(qǐng)求的數(shù)據(jù)量更大)。2、服務(wù)器端需要不斷地進(jìn)行資源查詢(xún),將占用服務(wù)器端資源。通常這些對(duì)應(yīng)的資源數(shù)據(jù)會(huì)記錄在服務(wù)器端的數(shù)據(jù)庫(kù)中,眾所周知,在一個(gè)高并發(fā)或大用戶(hù)量的分布式系統(tǒng)中,數(shù)據(jù)庫(kù)資源極為寶貴,頻繁的數(shù)據(jù)庫(kù)并發(fā)訪問(wèn)容易成為系統(tǒng)的瓶頸。
[0006]對(duì)上述資源占用問(wèn)題的解決,很多系統(tǒng)采用不直接解決,而從改變用戶(hù)操作等方式規(guī)避,例如采用在用戶(hù)翻頁(yè)時(shí)自動(dòng)將資源列表界面關(guān)閉,界面關(guān)閉期間自然不需請(qǐng)求資源數(shù)據(jù),這樣可減少發(fā)送請(qǐng)求的次數(shù);其他一些系統(tǒng)采用翻頁(yè)時(shí)自動(dòng)切換到相關(guān)的UI(例如本地資源列表)等方式;還有的系統(tǒng)將整本書(shū)的資源混合存放,即整本書(shū)的資源不做區(qū)分,用戶(hù)翻到任何一頁(yè),對(duì)應(yīng)的資源(列表)都相同,這樣資源列表就可不用隨用戶(hù)的翻頁(yè)動(dòng)作而不斷刷新了。這些措施從用戶(hù)操作或簡(jiǎn)化系統(tǒng)規(guī)則的角度,規(guī)避了發(fā)送請(qǐng)求的次數(shù),可解決對(duì)服務(wù)器端壓力過(guò)大的問(wèn)題。但很明顯,這些措施都以犧牲掉或多或少的用戶(hù)體驗(yàn)為代價(jià),有一定的不足。
【發(fā)明內(nèi)容】
[0007]針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法及系統(tǒng),在保證資源獲取時(shí)效性的同時(shí),減小服務(wù)器資源占用。
[0008]為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
[0009]一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法,包括以下步驟:
[0010](I)客戶(hù)端根據(jù)用戶(hù)的資源列表數(shù)據(jù)獲取請(qǐng)求,在客戶(hù)端本地緩存中查找是否存在待查詢(xún)資源列表數(shù)據(jù)且數(shù)據(jù)的時(shí)間戳未過(guò)期,若是則讀取緩存中對(duì)應(yīng)的資源列表數(shù)據(jù)發(fā)送到客戶(hù)端,進(jìn)入步驟(5),若否則進(jìn)入下一步;
[0011](2)客戶(hù)端向機(jī)構(gòu)服務(wù)器發(fā)送資源列表數(shù)據(jù)獲取請(qǐng)求,在機(jī)構(gòu)服務(wù)器的緩存中查找是否存在所述的待查詢(xún)資源列表數(shù)據(jù)且數(shù)據(jù)的時(shí)間戳未過(guò)期,若是則讀取緩存中對(duì)應(yīng)的資源列表數(shù)據(jù)發(fā)送到客戶(hù)端,進(jìn)入步驟(5),若否則進(jìn)入下一步;
[0012](3)客戶(hù)端向中心服務(wù)器發(fā)送資源列表數(shù)據(jù)獲取請(qǐng)求,在中心服務(wù)器對(duì)應(yīng)的緩存中查找是否存在所述的待查詢(xún)資源列表數(shù)據(jù)且數(shù)據(jù)的時(shí)間戳未過(guò)期,若是則讀取緩存中對(duì)應(yīng)的資源列表數(shù)據(jù)發(fā)送到客戶(hù)端,進(jìn)入步驟(5),若否則進(jìn)入下一步;
[0013](4)中心服務(wù)器將所述的資源列表數(shù)據(jù)獲取請(qǐng)求發(fā)送到后端web服務(wù)器,后端web服務(wù)器在數(shù)據(jù)庫(kù)中查詢(xún)對(duì)應(yīng)的資源列表數(shù)據(jù)并發(fā)送到中心服務(wù)器,中心服務(wù)器將接收到的資源列表數(shù)據(jù)發(fā)送到客戶(hù)端;
[0014](5)客戶(hù)端接收資源列表數(shù)據(jù)并在客戶(hù)端界面展現(xiàn)。
[0015]進(jìn)一步,如上所述的一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法,步驟(I)中,所述的資源列表數(shù)據(jù)是指資源對(duì)應(yīng)的屬性信息,包括資源的名稱(chēng)和資源描述信息的列表數(shù)據(jù)。
[0016]進(jìn)一步,如上所述的一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法,步驟(2)中,所述的機(jī)構(gòu)服務(wù)器包括多級(jí)機(jī)構(gòu)服務(wù)器,向機(jī)構(gòu)服務(wù)器發(fā)送資源獲取請(qǐng)求時(shí),優(yōu)先向低級(jí)機(jī)構(gòu)服務(wù)器發(fā)送,如果低級(jí)服務(wù)器的緩存中不存在待查詢(xún)資源列表數(shù)據(jù),再向低級(jí)機(jī)構(gòu)服務(wù)器的上一級(jí)機(jī)構(gòu)服務(wù)器發(fā)送。
[0017]進(jìn)一步,如上所述的一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法,步驟(3)中,所述的中心服務(wù)器為Nginx反向代理服務(wù)器,Nginx反向代理服務(wù)器中將資源列表數(shù)據(jù)緩存在與之相連的memcache中。
[0018]進(jìn)一步,如上所述的一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法,步驟(4)中,后端web服務(wù)器將資源列表數(shù)據(jù)發(fā)送到中心服務(wù)器后,Nginx反向代理服務(wù)器將接收到的資源列表數(shù)據(jù)緩存到與之相連的memcache中。
[0019]進(jìn)一步,如上所述的一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法,步驟(5)中,客戶(hù)端接收到資源列表數(shù)據(jù)后,將資源列表數(shù)據(jù)保存到客戶(hù)端本地緩存中,并更新資源的時(shí)間戳。
[0020]再進(jìn)一步,如上所述的一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法,當(dāng)中心服務(wù)器中存在新的資源更新時(shí),中心服務(wù)器將更新的資源及資源列表數(shù)據(jù)下發(fā)到機(jī)構(gòu)服務(wù)器中進(jìn)行緩存。
[0021]更進(jìn)一步,如上所述的一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)方法,根據(jù)資源列表數(shù)據(jù)的標(biāo)識(shí)ID查詢(xún)列表資源數(shù)據(jù)。
[0022]一種基于服務(wù)器和客戶(hù)端緩存的資源文件查詢(xún)系統(tǒng),包括客戶(hù)端、機(jī)構(gòu)服務(wù)器、中心服務(wù)器和后臺(tái)web服務(wù)器,所述的客戶(hù)端根據(jù)用戶(hù)的資源獲取請(qǐng)求,在客戶(hù)端本地緩存中查找是否存在待查詢(xún)資源列表數(shù)據(jù)且數(shù)據(jù)的時(shí)間戳未過(guò)期,若是則讀取緩存中對(duì)應(yīng)的資源列表數(shù)據(jù)發(fā)送到客戶(hù)端,并在客戶(hù)端展現(xiàn),若否則由客戶(hù)端將用戶(hù)的資源獲取請(qǐng)求發(fā)送到機(jī)構(gòu)服務(wù)器;
[0023]機(jī)構(gòu)服務(wù)器根據(jù)接收到的資源獲取請(qǐng)求,在機(jī)構(gòu)服務(wù)器的緩存中查找是否存在所述的待查詢(xún)資源列表數(shù)據(jù)且數(shù)據(jù)的時(shí)間戳未過(guò)期,若是則讀取緩存中對(duì)應(yīng)的資源列表數(shù)據(jù)發(fā)送到客戶(hù)端,并在客戶(hù)端展現(xiàn),若否則由客戶(hù)端將用戶(hù)的資源獲取請(qǐng)求發(fā)送到中心服務(wù)器;
[0024]中心服務(wù)器根據(jù)接收到的資源獲取請(qǐng)求,在中心服務(wù)器對(duì)應(yīng)的緩存中查找是否存在所述的待查詢(xún)資源列表數(shù)據(jù)且數(shù)據(jù)的時(shí)間戳未過(guò)期,若是則讀取緩存中對(duì)應(yīng)的資源列表數(shù)據(jù)發(fā)送到客戶(hù)端,并在客戶(hù)端展現(xiàn),若否則由中心服務(wù)器將用戶(hù)的資源獲取請(qǐng)求發(fā)送到后端web服務(wù)器;
[0025]后端web服務(wù)器根據(jù)接收到的資源獲取請(qǐng)求,在其數(shù)據(jù)庫(kù)中查詢(xún)對(duì)應(yīng)的資源列表數(shù)