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 相关文章推荐
一个刚完成的layout(拖动流畅,不受iframe影响)
Aug 17 Javascript
javascript中用星号表示预录入内容的实现代码
Jan 08 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
Jul 31 Javascript
jQuery cdn使用介绍
May 08 Javascript
javascript实现数独解法
Mar 14 Javascript
微信小程序 触控事件详细介绍
Oct 17 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
使用async-validator编写Form组件的方法
Jan 10 Javascript
JS实现获取word文档内容并输出显示到html页面示例
Jun 23 Javascript
微信小程序实现多选删除列表数据功能示例
Jan 15 Javascript
Vue中this.$nextTick的作用及用法
Feb 04 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程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
JavaScript中的面向对象介绍
2012/06/30 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python获取糗百图片代码实例
2013/12/18 Python
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python实现简易内存监控
2018/06/21 Python
Python3爬虫全国地址信息
2019/01/05 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
Python进行特征提取的示例代码
2020/10/15 Python
美国折扣网站:jClub
2017/08/07 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
应征英语教师求职信
2013/11/27 职场文书
幼儿园新学期寄语
2014/01/18 职场文书
劳模先进事迹材料
2014/12/24 职场文书
成绩单评语
2015/01/04 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers
DQL数据查询语句使用示例
2022/12/24 MySQL