亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于注解描述的Web緩存方法

文檔序號(hào):9380466閱讀:211來源:國(guó)知局
一種基于注解描述的Web緩存方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于互聯(lián)網(wǎng)應(yīng)用領(lǐng)域,具體涉及一種基于注解描述的Web緩存方法。
【背景技術(shù)】
[0002]緩存就是數(shù)據(jù)交換的緩沖區(qū)(稱作Cache),當(dāng)某一硬件要讀取數(shù)據(jù)時(shí),會(huì)首先從緩存中查找需要的數(shù)據(jù),如果找到了則直接執(zhí)行,找不到的話則從內(nèi)存中找。由于緩存的運(yùn)行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運(yùn)行。
[0003]API為操作系統(tǒng)留給應(yīng)用程序的一個(gè)調(diào)用接口,應(yīng)用程序通過調(diào)用操作系統(tǒng)的API而使操作系統(tǒng)去執(zhí)行應(yīng)用程序的命令(動(dòng)作)?,F(xiàn)有方案采用一般API方式實(shí)現(xiàn)緩存,即由開發(fā)者顯式調(diào)用緩存API,通常包括以下兩類API:
l、set/get方法直接操作緩存。即通過getCache (String cacheName)獲取緩存對(duì)象。setCache (String cacheName, String cacheValue)設(shè)置緩存對(duì)象。
[0004]2、從數(shù)據(jù)庫中獲取數(shù)據(jù)時(shí),首先從緩存獲取。如queryByCache (StringcacheName, String sql),該方法首先獲取cacheName對(duì)應(yīng)的緩存對(duì)象,當(dāng)緩存對(duì)象為null時(shí),再執(zhí)行sql語句并把查詢結(jié)果緩存在cacheName對(duì)應(yīng)的緩存對(duì)象中。
[0005]方案I米用的是set/get方法,需要程序員主動(dòng)管理cache,并在任何需要獲取cache的代碼中,硬編碼get方法獲取cache的值,而當(dāng)cache為null時(shí),程序員則必須SetCache0這些操作還涉及到多線程同步,編碼易出錯(cuò)導(dǎo)致臟數(shù)據(jù)。
[0006]方案2較方案I使用更為便利,但該方案的緩存數(shù)據(jù)無法更新,一旦用戶通過管理界面修改了 sql查詢對(duì)應(yīng)的數(shù)據(jù)庫表后,獲取的數(shù)據(jù)仍為最初查詢的緩存數(shù)據(jù)結(jié)果,而不會(huì)重新發(fā)起sql查詢。

【發(fā)明內(nèi)容】

[0007]本發(fā)明的目的是提供一個(gè)簡(jiǎn)單的基于“注解(Annotat1n) ”式描述的緩存方法,簡(jiǎn)化程序員編碼及緩存管理難度,并確保自動(dòng)刷新緩存。
[0008]本發(fā)明采用以下技術(shù)方案實(shí)現(xiàn):一種基于注解描述的Web緩存方法,其特征在于:包括以下步驟:步驟S1:用戶瀏覽器發(fā)起HTTP請(qǐng)求,對(duì)應(yīng)于查詢方法上的緩存操作注解,該請(qǐng)求首先被緩存攔截器攔截;步驟S2:緩存攔截器發(fā)現(xiàn)從未緩存過該Controller方法及相關(guān)參數(shù)上的數(shù)據(jù),則將該Controller方法及相關(guān)參數(shù)發(fā)往控制器對(duì)象處理;步驟S3:控制器對(duì)象執(zhí)行各種數(shù)據(jù)庫查詢操作,獲取生成視圖所需要的所有數(shù)據(jù),數(shù)據(jù)庫將該數(shù)據(jù)返回給控制器;步驟S4:控制器調(diào)用緩存方法,保存生成視圖所需要的所有數(shù)據(jù);控制器將數(shù)據(jù)發(fā)送給視圖;步驟S5:視圖將獲得數(shù)據(jù)渲染成為最終的HTML頁面,并發(fā)送至用戶瀏覽器進(jìn)行顯示;步驟S6:當(dāng)其他用戶瀏覽器發(fā)來同樣的HTTP請(qǐng)求,訪問已寫入過緩存的Controller方法時(shí),該請(qǐng)求首先被緩存攔截器;步驟S7:緩存攔截器向緩存服務(wù)器Memcached中的請(qǐng)求緩存數(shù)據(jù);步驟S8 =Memcached將緩存數(shù)據(jù)發(fā)送回緩存攔截器攔截;緩存攔截器將查詢結(jié)果返回給用戶瀏覽器;步驟S9:用戶瀏覽器發(fā)起HTTP請(qǐng)求,對(duì)應(yīng)于增刪改方法上的清除緩存操作注解,該請(qǐng)求首先被清除緩存攔截器攔截;步驟SlO:清除緩存攔截器將該Controller方法及相關(guān)參數(shù)發(fā)往控制器對(duì)象處理;步驟Sll:控制器對(duì)象執(zhí)行各種數(shù)據(jù)庫增刪改操作,并獲取生成視圖所需要的所有數(shù)據(jù);數(shù)據(jù)庫將增刪改數(shù)據(jù)的結(jié)果返回給控制器;步驟S12:控制器調(diào)用緩存方法,清除視圖需要的所有相關(guān)數(shù)據(jù);控制器將數(shù)據(jù)發(fā)送給視圖;步驟S13:視圖將獲得數(shù)據(jù)渲染成為最終的HTML頁面,并發(fā)送至用戶瀏覽器進(jìn)行顯示。
[0009]在本發(fā)明一實(shí)施例中,當(dāng)包含INSERT、UPDATE或DELETE操作的方法,設(shè)置為清除緩存操作清除該控制器的所有緩存數(shù)據(jù);若只包含SELECT數(shù)據(jù)庫表操作的方法,則設(shè)置為緩存操作生成緩存數(shù)據(jù)。
[0010]與現(xiàn)有技術(shù)相比本發(fā)明具有以下優(yōu)點(diǎn):
1、不使用JavaAPI編程操作,避免程序員操作錯(cuò)誤。用戶無需考慮把什么對(duì)象緩存在哪個(gè)cacheName中,讀取緩存和清除緩存操作分別使用不同的攔截器配置,不帶有任何參數(shù),大大簡(jiǎn)化了程序員的工作量;
2、該方法支持多緩存服務(wù)器的群集配置,且當(dāng)緩存服務(wù)器宕機(jī)下線時(shí),或者緩存服務(wù)器重新上線時(shí),緩存插件將自動(dòng)適配,自動(dòng)調(diào)整緩存分配,確保緩存的命中率達(dá)到預(yù)期。
【附圖說明】
[0011]
圖1為HTTP請(qǐng)求Controller的查詢方法時(shí)的流程示意圖。
[0012]圖2為HTTP請(qǐng)求Controller的增、刪、改方法時(shí)的流程示意圖。
【具體實(shí)施方式】
[0013]下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明做進(jìn)一步說明。
[0014]一種基于注解描述的Web緩存方法,其特征在于:包括以下步驟:步驟S1:用戶瀏覽器發(fā)起HTTP請(qǐng)求,對(duì)應(yīng)于查詢方法上的緩存操作注解,該請(qǐng)求首先被緩存攔截器攔截;步驟S2:緩存攔截器發(fā)現(xiàn)從未緩存過該Controller方法及相關(guān)參數(shù)上的數(shù)據(jù),則將該Controller方法及相關(guān)參數(shù)發(fā)往控制器對(duì)象處理;步驟S3:控制器對(duì)象執(zhí)行各種數(shù)據(jù)庫查詢操作,獲取生成視圖所需要的所有數(shù)據(jù),數(shù)據(jù)庫將該數(shù)據(jù)返回給控制器;步驟S4:控制器調(diào)用緩存方法,保存生成視圖所需要的所有數(shù)據(jù);控制器將數(shù)據(jù)發(fā)送給視圖;步驟S5:視圖將獲得數(shù)據(jù)渲染成為最終的HTML頁面,并發(fā)送至用戶瀏覽器進(jìn)行顯示;步驟S6:當(dāng)其他用戶瀏覽器發(fā)來同樣的HTTP請(qǐng)求,訪問已寫入過緩存的Controller方法時(shí),該請(qǐng)求首先被緩存攔截器;步驟S7:緩存攔截器向緩存服務(wù)器Memcached中的請(qǐng)求緩存數(shù)據(jù);步驟S8:Memcached將緩存數(shù)據(jù)發(fā)送回緩存攔截器攔截;緩存攔截器將查詢結(jié)果返回給用戶瀏覽器;步驟S9:用戶瀏覽器發(fā)起HTTP請(qǐng)求,對(duì)應(yīng)于增刪改方法上的清除緩存操作注解,該請(qǐng)求首先被清除緩存攔截器攔截;步驟SlO:清除緩存攔截器將該Controller方法及相關(guān)參數(shù)發(fā)往控制器對(duì)象處理;步驟Sll:控制器對(duì)象執(zhí)行各種數(shù)據(jù)庫增刪改操作,并獲取生成視圖所需要的所有數(shù)據(jù);數(shù)據(jù)庫將增刪改數(shù)據(jù)的結(jié)果返回給控制器;步驟S12:控制器調(diào)用緩存方法,清除視圖需要的所有相關(guān)數(shù)據(jù);控制器將數(shù)據(jù)發(fā)送給視圖;步驟S13:視圖將獲得數(shù)據(jù)渲染成為最終的HTML頁面,并發(fā)送至用戶瀏覽器進(jìn)行顯示。
[0015]HTTP請(qǐng)求ControIIer的查詢方法時(shí)的流程參見圖1,HTTP請(qǐng)求ControIIer的增、刪、改方法時(shí)的流程參見圖2。
[0016]具體的,當(dāng)包含INSERT、UPDATE或DELETE操作的方法,設(shè)置為OBefore (Evictlnterceptor.class)(清除緩存操作)清除該控制器的所有緩存數(shù)據(jù);若只包含SELECT數(shù)據(jù)庫表操作的方法,則設(shè)置為OCacheInterc印tor.class)(緩存操作)生成緩存數(shù)據(jù)。
[0017]綜上所述,本發(fā)明提供的上列較佳實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于注解描述的Web緩存方法,其特征在于:包括以下步驟: 步驟S1:用戶瀏覽器發(fā)起HTTP請(qǐng)求,對(duì)應(yīng)于查詢方法上的緩存操作注解,該請(qǐng)求首先被緩存攔截器攔截; 步驟S2:緩存攔截器發(fā)現(xiàn)從未緩存過該Controller方法及相關(guān)參數(shù)上的數(shù)據(jù),則將該Controller方法及相關(guān)參數(shù)發(fā)往控制器對(duì)象處理; 步驟S3:控制器對(duì)象執(zhí)行各種數(shù)據(jù)庫查詢操作,獲取生成視圖所需要的所有數(shù)據(jù),數(shù)據(jù)庫將該數(shù)據(jù)返回給控制器; 步驟S4:控制器調(diào)用緩存方法,保存生成視圖所需要的所有數(shù)據(jù);控制器將數(shù)據(jù)發(fā)送給視圖; 步驟S5:視圖將獲得數(shù)據(jù)渲染成為最終的HTML頁面,并發(fā)送至用戶瀏覽器進(jìn)行顯示;步驟S6:當(dāng)其他用戶瀏覽器發(fā)來同樣的HTTP請(qǐng)求,訪問已寫入過緩存的Controller方法時(shí),該請(qǐng)求首先被緩存攔截器; 步驟S7:緩存攔截器向緩存服務(wù)器Memcached中的請(qǐng)求緩存數(shù)據(jù); 步驟S8 =Memcached將緩存數(shù)據(jù)發(fā)送回緩存攔截器攔截;緩存攔截器將查詢結(jié)果返回給用戶瀏覽器; 步驟S9:用戶瀏覽器發(fā)起HTTP請(qǐng)求,對(duì)應(yīng)于增刪改方法上的清除緩存操作注解,該請(qǐng)求首先被清除緩存攔截器攔截; 步驟SlO:清除緩存攔截器將該Controller方法及相關(guān)參數(shù)發(fā)往控制器對(duì)象處理;步驟Sll:控制器對(duì)象執(zhí)行各種數(shù)據(jù)庫增刪改操作,并獲取生成視圖所需要的所有數(shù)據(jù);數(shù)據(jù)庫將增刪改數(shù)據(jù)的結(jié)果返回給控制器; 步驟S12:控制器調(diào)用緩存方法,清除視圖需要的所有相關(guān)數(shù)據(jù);控制器將數(shù)據(jù)發(fā)送給視圖; 步驟S13:視圖將獲得數(shù)據(jù)渲染成為最終的HTML頁面,并發(fā)送至用戶瀏覽器進(jìn)行顯示。2.根據(jù)權(quán)利要求1所述的基于注解描述的Web緩存方法,其特征在于:當(dāng)包含INSERT、UPDATE或DELETE操作的方法,設(shè)置為清除緩存操作清除該控制器的所有緩存數(shù)據(jù);若只包含SELECT數(shù)據(jù)庫表操作的方法,則設(shè)置為緩存操作生成緩存數(shù)據(jù)。
【專利摘要】本發(fā)明的目的是提供一種基于注解描述的Web緩存方法,在控制器類(Controller)中,通過Before(CacheInterceptor.class)設(shè)置本方法的數(shù)據(jù)需要緩存。通過Before(EvictInterceptor.class)設(shè)置本方法將清除本控制器設(shè)置的緩存。該方法不使用Java?API編程操作,避免程序員操作錯(cuò)誤。用戶無需考慮把什么對(duì)象緩存在哪個(gè)cacheName中,讀取緩存和清除緩存操作分別使用不同的攔截器配置,不帶有任何參數(shù),大大簡(jiǎn)化了程序員的工作量;該方法支持多緩存服務(wù)器的群集配置,且當(dāng)緩存服務(wù)器宕機(jī)下線時(shí),或者緩存服務(wù)器重新上線時(shí),緩存插件將自動(dòng)適配,自動(dòng)調(diào)整緩存分配,確保緩存的命中率達(dá)到預(yù)期。
【IPC分類】H04L29/08
【公開號(hào)】CN105100289
【申請(qǐng)?zhí)枴緾N201510611279
【發(fā)明人】蔡曉東
【申請(qǐng)人】中郵科通信技術(shù)股份有限公司
【公開日】2015年11月25日
【申請(qǐng)日】2015年9月24日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1