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 相关文章推荐
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
jQuery内容过滤选择器用法分析
Feb 10 Javascript
让图片跳跃起来  javascript图片轮播特效
Feb 16 Javascript
jQuery实现移动端手机商城购物车功能
Sep 24 Javascript
js关于getImageData跨域问题的解决方法
Oct 14 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
Mar 13 Javascript
jQuery EasyUI window窗口使用实例代码
Dec 25 jQuery
如何实现小程序tab栏下划线动画效果
May 18 Javascript
Vue多环境代理配置方法思路详解
Jun 21 Javascript
vue项目中监听手机物理返回键的实现
Jan 18 Javascript
node.JS事件机制与events事件模块的使用方法详解
Feb 06 Javascript
小程序瀑布流组件实现翻页与图片懒加载
May 19 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 XML操作的各种方法解析(比较详细)
2010/06/17 PHP
基于Zend的Config机制的应用分析
2013/05/02 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php 如何获取数组第一个值
2013/08/06 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
谈谈python中GUI的选择
2018/03/01 Python
python 获取字符串MD5值方法
2018/05/29 Python
Scrapy框架使用的基本知识
2018/10/21 Python
学习python的前途 python挣钱
2019/02/27 Python
python pygame实现方向键控制小球
2019/05/17 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
企业年度评优方案
2014/06/02 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
创业计划书之熟食店
2019/10/16 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis