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