JS实现前端缓存的方法

发布时间 - 2026-01-11 03:21:21    点击率:

在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在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  # 前端缓存  # 轻松掌握JavaScript代理模式  # JavaScript设计模式之代理模式详解  # JavaScript的设计模式经典之代理模式  # JavaScript设计模式之代理模式简单实例教程  # js 设置缓存及获取设置的缓存  # JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例  # JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析  # JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析  # JavaScript设计模式之单例模式原理与用法实例分析  # JavaScript设计模式之原型模式分析【ES5与ES6】  # JavaScript设计模式之缓存代理模式原理与简单用法示例  # 多个  # 这种方法  # 适用于  # 用户登录  # 创建一个  # 都去  # 大家多多  # 象中  # 后端  # 器中  # 加载  # 一个函数  # 下拉框  # 极大地  # getDicts  # function  # USER_TYPE  # STATUS  # dicts  # REPORT_STATUS 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  phpredis提高消息队列的实时性方法(推荐)  高性能网站服务器部署指南:稳定运行与安全配置优化方案  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  创业网站制作流程,创业网站可靠吗?  Laravel Docker环境搭建教程_Laravel Sail使用指南  手机网站制作与建设方案,手机网站如何建设?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何快速查询网址的建站时间与历史轨迹?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Laravel如何实现本地化和多语言支持?(i18n教程)  新三国志曹操传主线渭水交兵攻略  黑客如何利用漏洞与弱口令入侵网站服务器?  Python面向对象测试方法_mock解析【教程】  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Android okhttputils现在进度显示实例代码  打造顶配客厅影院,这份100寸电视推荐名单请查收  详解Huffman编码算法之Java实现  无锡营销型网站制作公司,无锡网选车牌流程?  如何在建站宝盒中设置产品搜索功能?  jQuery 常见小例汇总  如何正确选择百度移动适配建站域名?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Linux系统命令中screen命令详解  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  详解jQuery中的事件  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  如何用低价快速搭建高质量网站?  Laravel如何记录自定义日志?(Log频道配置)  简历在线制作网站免费版,如何创建个人简历?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  网站页面设计需要考虑到这些问题  PythonWeb开发入门教程_Flask快速构建Web应用  微信推文制作网站有哪些,怎么做微信推文,急?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何在橙子建站上传落地页?操作指南详解  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  如何快速搭建自助建站会员专属系统?