前端JS实现数据字典缓存策略

作者:极速慢跑

时间:2026-10-22

浏览:130

本文介绍在前端利用JavaScript对象缓存数据字典的方法。通过一次性从服务器获取数据并存入本地对象,后续操作直接读取本地数据,从而大幅减少服务器请求次数。该方法特别适用于包含大量下拉框及iframe框架的页面,能有效提升加载速度和用户体验。

文章目录

前端缓存数据字典的背景与优势

在前端浏览器环境中,部分数据(例如数据字典内容)可在首次请求时一次性获取,并存储于JavaScript对象中。此后如需使用这些数据,便无需再次向服务器发起请求。对于大量依赖数据字典填充下拉列表的页面,此策略能显著降低对服务器的访问频率。该技术尤其适用于采用iframe架构的页面场景。

具体实现思路与方法如下:

前端缓存实现步骤

首先,创建一个名为cache.js的文件用于存放相关逻辑。

第一步,在前端页面中明确哪些数据需要一次性加载至前端缓存,并定义一个对象用于存储这些数据。

定义缓存数据结构


/**
 * 定义需要在用户登录的时候获取到本地的数据字典类别
 */
var clsCodes = {clsCodes :
    [BOOL,
     STATUS,
     USER_TYPE,
     REPORT_STATUS
   ]
};
 
/**
 * 获取数据字典到本地
 */
var dicts;

第二步,在前端页面中定义一个函数,用于调用后台接口获取数据,并将获取到的数据保存到本地缓存对象(即dicts)中。

获取并保存数据至本地


function getDicts() {
  $.post(getContextPath() + /api/sys/getDictList,
      clsCodes,
      function(resultBean, status, xhRequest) {
        if (resultBean.data != undefined) {
          dicts = resultBean.data;
        }
      }, 
      'json');
}

在主页面加载阶段调用上述方法,一次性获取数据并完成缓存。此后,当需要相同数据时,直接从这个本地对象dicts中读取即可。

接下来涉及后端Controller的处理逻辑。

第三步,定义一个接口,根据前端的请求参数,查询数据库(或查询服务器缓存,如示例所示)获取数据并返回给前端。

后端接口实现


/**
 * 根据多个分类编号获取多个字典集合
 * @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,>

以上为本文介绍的全部内容,希望能为读者提供有益参考,也欢迎大家继续支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章