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 颜色选择器(兼容firefox)
Mar 05 Javascript
javascript form 验证函数 弹出对话框形式
Jun 23 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
Mar 06 Javascript
javascript实现简单查找与替换的方法
Jul 22 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
jQuery树形控件zTree使用小结
Aug 02 Javascript
正则表达式,替换所有HTML标签的简单实例
Nov 28 Javascript
js实现百度登录框鼠标拖拽效果
Mar 07 Javascript
js module大战
Apr 19 Javascript
教你如何用Node实现API的转发(某音乐)
Sep 20 Javascript
Vue引入Stylus知识点总结
Jan 16 Javascript
vue实现简单全选和反选功能
Sep 15 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实现Session存储到Redis
2015/11/11 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
python列表的常用操作方法小结
2016/05/21 Python
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
Django  ORM 练习题及答案
2019/07/19 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
公司授权委托书范本
2014/04/03 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
学生检讨书怎么写
2015/05/07 职场文书
旅行社计调工作总结
2015/08/12 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS