JS實(shí)現(xiàn)前端緩存的方法
在前端瀏覽器中,有些數(shù)據(jù)(比如數(shù)據(jù)字典中的數(shù)據(jù)),可以在第一次請(qǐng)求的時(shí)候全部拿過來保存在js對(duì)象中,以后需要的時(shí)候就不用每次都去請(qǐng)求服務(wù)器了。對(duì)于那些大量使用數(shù)據(jù)字典來填充下拉框的頁(yè)面,這種方法可以極大地減少對(duì)服務(wù)器的訪問。這種方法特別適用于使用iframe的框架。
具體實(shí)現(xiàn)思路和方法:
創(chuàng)建一個(gè)cache.js文件:
1、前端頁(yè)面,定義那些數(shù)據(jù)需要一次性拿到前端緩存,定義一個(gè)對(duì)象來保存這些數(shù)據(jù):
/** * 定義需要在用戶登錄的時(shí)候獲取到本地的數(shù)據(jù)字典類別 */ var clsCodes = {clsCodes : [BOOL, STATUS, USER_TYPE, REPORT_STATUS ] }; /** * 獲取數(shù)據(jù)字典到本地 */ var dicts;
2、前端頁(yè)面,定義一個(gè)函數(shù)來調(diào)用后臺(tái)接口獲取數(shù)據(jù),然后保存到本地緩存對(duì)象(dicts)中。
function getDicts() { $.post(getContextPath() + /api/sys/getDictList, clsCodes, function(resultBean, status, xhRequest) { if (resultBean.data != undefined) { dicts = resultBean.data; } }, 'json'); }
在主頁(yè)面加載的時(shí)候調(diào)用這個(gè)方法一次性獲取數(shù)據(jù)并緩存起來。這樣,以后需要同樣的數(shù)據(jù),就直接從本地對(duì)象dicts中獲取了。
后端Controller:
3、定義一個(gè)接口,根據(jù)前端的請(qǐng)求,查詢數(shù)據(jù)庫(kù)(或查詢服務(wù)器緩存,如下面例子中)獲取數(shù)據(jù)返回給前端:
/** * 根據(jù)多個(gè)分類編號(hào)獲取多個(gè)字典集合 * @param clsCodes * @return {{clsCode : {code1:name1,code2:name2...}}, ...} */ @SuppressWarnings({ unchecked, rawtypes }) @ResponseBody @RequestMapping(getDictList) public ResultBean getDictList(@RequestParam(value = clsCodes[], required = true) String[] clsCodes) { ResultBean rb = new ResultBean(); Map<string, string="">> dictCache = (Map<string, string="">>) CacheManager.getInstance().get(CacheConstants.DICT); Map dictMap = new LinkedHashMap<>(); //使用LinkedHashMap保證順序 if(dictCache != null){ for(String clsCode: clsCodes){ dictMap.put(clsCode, dictCache.get(clsCode)); } }else{ rb.setMessage(緩存中拿不到字典信息!); rb.setSuccess(false); } rb.setData(dictMap); return rb; }</string,></string,>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 輕松掌握J(rèn)avaScript代理模式
- JavaScript設(shè)計(jì)模式之代理模式詳解
- JavaScript的設(shè)計(jì)模式經(jīng)典之代理模式
- JavaScript設(shè)計(jì)模式之代理模式簡(jiǎn)單實(shí)例教程
- js 設(shè)置緩存及獲取設(shè)置的緩存
- JavaScript設(shè)計(jì)模式之觀察者模式(發(fā)布訂閱模式)原理與實(shí)現(xiàn)方法示例
- JavaScript設(shè)計(jì)模式之工廠模式和抽象工廠模式定義與用法分析
- JavaScript設(shè)計(jì)模式之構(gòu)造器模式(生成器模式)定義與用法實(shí)例分析
- JavaScript設(shè)計(jì)模式之單例模式原理與用法實(shí)例分析
- JavaScript設(shè)計(jì)模式之原型模式分析【ES5與ES6】
- JavaScript設(shè)計(jì)模式之緩存代理模式原理與簡(jiǎn)單用法示例
相關(guān)文章
小程序?qū)崿F(xiàn)頁(yè)面跳轉(zhuǎn)與數(shù)據(jù)傳遞方案
在開發(fā)過程中經(jīng)常會(huì)遇到在微信小程序的頁(yè)面跳轉(zhuǎn)以及數(shù)據(jù)傳遞的知識(shí)點(diǎn),所以下面這篇文章主要給大家介紹了關(guān)于小程序?qū)崿F(xiàn)頁(yè)面跳轉(zhuǎn)與數(shù)據(jù)傳遞的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09js實(shí)現(xiàn)加載頁(yè)面就自動(dòng)觸發(fā)超鏈接的示例
下面小編就為大家?guī)硪黄猨s實(shí)現(xiàn)加載頁(yè)面就自動(dòng)觸發(fā)超鏈接的示例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08layui輸入框中只允許輸入整數(shù)的實(shí)現(xiàn)方法
今天小編就為大家分享一篇layui輸入框中只允許輸入整數(shù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09js實(shí)現(xiàn)表單及時(shí)驗(yàn)證功能 用戶信息立即驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)表單及時(shí)驗(yàn)證功能,在輸入后就可以立即驗(yàn)證,含用戶類型,性別,愛好等驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09微信小程序動(dòng)態(tài)設(shè)置導(dǎo)航欄標(biāo)題的實(shí)現(xiàn)步驟
實(shí)際開發(fā)中很多時(shí)候我們需要通過上個(gè)頁(yè)面?zhèn)鬟^來的值動(dòng)態(tài)的更改標(biāo)題欄文字,下面這篇文章主要給大家介紹了關(guān)于微信小程序動(dòng)態(tài)設(shè)置導(dǎo)航欄標(biāo)題的實(shí)現(xiàn)步驟,需要的朋友可以參考下2023-02-02微信小程序中使用 async/await的方法實(shí)例分析
這篇文章主要介紹了微信小程序中使用 async/await的方法,結(jié)合實(shí)例形式分析了微信小程序中async/await的功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05