JS实现前端缓存的方法


Posted in Javascript onSeptember 21, 2017

在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在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,>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
学习js所必须要知道的一些
Mar 07 Javascript
js中获取事件对象的方法小结
Mar 13 Javascript
js写一个弹出层并锁屏效果实现代码
Dec 07 Javascript
js时间控件只显示年月
Jan 08 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
图文讲解用vue-cli脚手架创建vue项目步骤
Feb 12 Javascript
深入了解JavaScript 私有化
May 30 Javascript
Vue.js计算机属性computed和methods方法详解
Oct 12 Javascript
WEB前端性能优化的7大手段详解
Feb 04 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 Javascript
javascript自定义加载loading效果
Sep 15 Javascript
vue使用canvas实现移动端手写签名
Sep 22 Javascript
JS基于正则表达式实现的密码强度验证功能示例
Sep 21 #Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 #jQuery
详解react服务端渲染(同构)的方法
Sep 21 #Javascript
详解node单线程实现高并发原理与node异步I/O
Sep 21 #Javascript
删除table表格行的实例讲解
Sep 21 #Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
Sep 21 #Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
Sep 21 #Javascript
You might like
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
纯文字版返回顶端的js代码
2013/08/01 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
javascript中的this详解
2014/12/08 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
详解Python中for循环的使用方法
2015/05/14 Python
python机器学习之决策树分类详解
2017/12/20 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
美工的岗位职责
2013/11/14 职场文书
建筑班组长岗位职责
2014/01/02 职场文书
即兴演讲稿
2014/01/04 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
大学生实习介绍信
2015/05/05 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
企业安全生产检查制度
2015/08/06 职场文书
2016年寒假家长评语
2015/10/10 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript