首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >前端缓存处理[通俗易懂]

前端缓存处理[通俗易懂]

作者头像
全栈程序员站长
发布2022-11-01 17:21:13
发布2022-11-01 17:21:13
8120
举报

大家好,又见面了,我是你们的朋友全栈君。

前端缓存处理

在开发过程中,总有一些使用频率很高的接口,数据内容还不基本不修改的数据。为了提高效率,自然要放到缓存中。

后端将数据放入redis,那么前端放到哪呢?

通常的选择是localStorage、sessionStorage中。

1.前端的缓存位置区别:

简单说明,详细区别可自行百度。

localStorage: 永久保存,浏览器关闭也不会消失。除非手动清除数据。

sessionStorage:暂时保存,缓存的数据时间是会话级别的。不会永久保存。

2.js工具类代码:

代码语言:javascript
复制
/** * 根据字典编码获取字典数据 * 注意:此方法是异步方法,需要用.then(res => {})获取返回值 * @param {string} code 字典编码 * @returns 字典数据 */
async getCodeList(code) { 

let codeList = sessionStorage.getItem(code);
// 校验这个数据是否可用
if (StringUtil.isEmpty(codeList)) { 

// 此处同步调用接口,是防止方法已经结束了,但是数据还没获取到。(这里使用await,方法就必须是async修饰的)
await sysCode.itemCodes({ 
code: code}).then((res) => { 

// 存数据时都需要用JSON进行转换。
sessionStorage.setItem(code, JSON.stringify(res));
codeList = JSON.stringify(res);
})
}
return JSON.parse(codeList);
},
/** * 根据字典编码和字典数据的id获取该字典数据的名称 * 注意:调用此方法的位置要确保当前系统已经调用过同文件中的getCodeList方法,并且code一致 * @param {string} code 字典编码 * @param {number} id 字典数据的id * @returns {String} 字典数据的名称 */
getCodeName(code, id) { 

id = parseInt(id);
let codeList = sessionStorage.getItem(code);
return JSON.parse(codeList).filter(e => e.valueId === id)[0].valueName;
},

3.页面中的使用:

代码语言:javascript
复制
/** * 获取下拉框数据 */
select() { 

// 异步方法需要使用.then()获取数据
sysCodeUtil.getCodeList("type").then(res => { 

this.type = res;
})
},
// 此处粘一行代码说明getCodeName的使用
res.data.type = sysCodeUtil.getCodeName("type", res.data.type);

使用时根据具体使用环境具体选择放到sessionStorage中还是localStorage中,我这里是放到了sessionStorage中。 我是做java的,js并不是非常熟悉,把这个方案想出来用了一两天的时间。 最开始没有这个方法并没有加异步,写完了这个工具类之后发现系统第一次调用的时候,方法已经结束了但是没有获取到值。 sessionStorage中也有值,就是返回值没有数据。后来发现是调用接口的时候异步执行,方法结束后才会调用接口。(最开始不太明白js的异步执行规则,后来才知道的) 加上异步之后就可以解决这个问题了,调用的时候会把数据获取到再返回。

我这里是这样做的,我感觉不是最优解,但是我只想到了这种方式,有大佬有更好的方式欢迎在评论区评论!

有什么问题,也欢迎在评论区留言!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月24日,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 前端缓存处理
    • 1.前端的缓存位置区别:
    • 2.js工具类代码:
    • 3.页面中的使用:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档