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 相关文章推荐
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Sep 22 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
Nov 02 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
Mar 31 Javascript
js删除Array数组中指定元素的两种方法
Aug 03 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
Aug 29 Javascript
AngularJs Understanding the Controller Component
Sep 02 Javascript
javascript表单正则应用
Feb 04 Javascript
js使用原型对象(prototype)需要注意的地方
Aug 28 Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
python访问类中docstring注释的实现方法
2015/05/04 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
python实现按长宽比缩放图片
2018/06/07 Python
python爬虫自动创建文件夹的功能
2018/08/01 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
微信小程序python用户认证的实现
2019/07/29 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
给老师的检讨书
2014/02/11 职场文书
农林环境专业求职信
2014/03/13 职场文书
物业管理专业自荐信
2014/07/01 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
2015元旦感言
2015/12/09 职场文书
投资入股协议书
2016/03/22 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
Python入门学习之类的相关知识总结
2021/05/25 Python