使用JS实现前端缓存
2017-09-20 23:00
302 查看
【转】使用JS实现前端缓存
在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在js对象中,以后需要的时候就不用每次都去请求服务器了。对于那些大量使用数据字典来填充下拉框的页面,这种方法可以极大地减少对服务器的访问。这种方法特别适用于使用iframe的框架。具体实现思路和方法:
创建一个cache.js文件:
1、前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据:
/** * 定义需要在用户登录的时候获取到本地的数据字典类别 */ var clsCodes = {clsCodes : [BOOL, STATUS, USER_TYPE, REPORT_STATUS ] }; /** * 获取数据字典到本地 */ var dicts;
2、前端页面,定义一个函数来调用后台接口获取数据,然后保存到本地缓存对象(dicts)中。
function getDicts() { $.post(getContextPath() + /api/sys/getDictList, clsCodes, function(resultBean, status, xhRequest) { if (resultBean.data != undefined) { dicts = resultBean.data; } }, 'json'); }
在主页面加载的时候调用这个方法一次性获取数据并缓存起来。这样,以后需要同样的数据,就直接从本地对象dicts中获取了。
后端Controller:
3、定义一个接口,根据前端的请求,查询数据库(或查询服务器缓存,如下面例子中)获取数据返回给前端:
/** * 根据多个分类编号获取多个字典集合 * @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,>
相关文章推荐
- 使用js实现前端缓存
- 使用JS实现前端缓存
- HTML编程之如何使用JS实现前端缓存
- JS学习35:js使用JSONP、VAR实现前端跨域
- 【前端七牛组件】使用js 实现七牛云的上传文件操作
- PHP+TP框架实现获取微信JS-SDK使用权限签名算法需要的jsapi_ticket,并全局缓存
- 【前端】使用readline模块实现Node.js的输入输出
- 使用jquery-validationEngine框架,4步实现前端JS校验
- spring boot返回js文件实现前端缓存
- 在vue.js中使用JSZip实现在前端解压文件的方法
- 用director.js实现前端路由使用实例
- js使用Promise实现简单的Ajax缓存
- director.js实现前端路由使用实例
- 前端特效:使用js实现奇幻水母效果
- js 使用前端导出excel,设置标题和页脚,实现特殊表格需求
- 使用jquery-validationEngine框架,4步实现前端JS校验
- [后端人员耍前端系列]KnockoutJs篇:使用KnockoutJs+Bootstrap实现分页
- JS实现前端缓存的方法
- 使用JS实现简单缓存功能,防止用户重复点击,重复AJAX提交
- js使用JSONP、VAR实现前端跨域