JS实现前端缓存的方法

 更新时间:2017年09月21日 10:25:43   作者:Adam__Smith  
这篇文章主要为大家详细介绍了JS实现前端缓存的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在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,>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 全屏js头像上传插件源码高清版

    全屏js头像上传插件源码高清版

    这篇文章主要为大家详细介绍了全屏js头像上传插件源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 小程序实现页面跳转与数据传递方案

    小程序实现页面跳转与数据传递方案

    在开发过程中经常会遇到在微信小程序的页面跳转以及数据传递的知识点,所以下面这篇文章主要给大家介绍了关于小程序实现页面跳转与数据传递的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • js实现加载页面就自动触发超链接的示例

    js实现加载页面就自动触发超链接的示例

    下面小编就为大家带来一篇js实现加载页面就自动触发超链接的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • JavaScript 中如何将秒转换为分秒

    JavaScript 中如何将秒转换为分秒

    JavaScript中将秒转换为分钟和秒,通过将秒数除以 60 得到整分钟数,获取剩余的秒数,本文通过实例代码介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-09-09
  • layui输入框中只允许输入整数的实现方法

    layui输入框中只允许输入整数的实现方法

    今天小编就为大家分享一篇layui输入框中只允许输入整数的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • Three.js入门之hello world以及如何绘制线

    Three.js入门之hello world以及如何绘制线

    这篇文章主要给大家介绍了关于Three.js入门之hello world以及如何绘制线的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • js实现表单及时验证功能 用户信息立即验证

    js实现表单及时验证功能 用户信息立即验证

    这篇文章主要为大家详细介绍了js实现表单及时验证功能,在输入后就可以立即验证,含用户类型,性别,爱好等验证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 微信小程序动态设置导航栏标题的实现步骤

    微信小程序动态设置导航栏标题的实现步骤

    实际开发中很多时候我们需要通过上个页面传过来的值动态的更改标题栏文字,下面这篇文章主要给大家介绍了关于微信小程序动态设置导航栏标题的实现步骤,需要的朋友可以参考下
    2023-02-02
  • 微信小程序中使用 async/await的方法实例分析

    微信小程序中使用 async/await的方法实例分析

    这篇文章主要介绍了微信小程序中使用 async/await的方法,结合实例形式分析了微信小程序中async/await的功能、使用方法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • 红米手机抢购的js代码

    红米手机抢购的js代码

    这篇文章主要介绍了红米手机抢购时返回的js代码,制作红米抢购软件时可以用到,,需要的朋友可以参考下
    2014-03-03

最新评论