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 相关文章推荐
javascript 模拟点击广告
Jan 02 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
jQuery中delegate()方法的用法详解
Oct 13 Javascript
js实现导航栏中英文切换效果
Jan 16 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
Apr 10 Javascript
详解AngularJS ui-sref的简单使用
Apr 24 Javascript
zTree异步加载展开第一级节点的实现方法
Sep 05 Javascript
vue init失败简单解决方法(终极版)
Dec 22 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
Feb 07 Javascript
.vue文件 加scoped 样式不起作用的解决方法
May 28 Javascript
Vue项目history模式下微信分享爬坑总结
Mar 29 Javascript
使用微信SDK自定义分享的方法
Jul 03 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中cookies使用指南
2007/03/16 PHP
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
php加密解密字符串示例
2016/10/13 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
javascript Base类 包含基本的方法
2009/07/22 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
7个JS基础知识总结
2014/03/05 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
js实现简易计算器功能
2019/10/18 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
简单谈谈python中的多进程
2016/11/06 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
python日志模块logbook使用方法
2019/09/19 Python
python Tornado框架的使用示例
2020/10/19 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
社区综治工作汇报
2014/10/27 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
委托书范本格式
2019/04/18 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android