前端性能优化:前端接口缓存方案

功能概述:

  1. 前端项目中有同一接口重复触发的并发现象
  2. 一些公共数据接口,如用户信息,配置信息等接口需要多次获取
  3. 首页有大量重复请求影响启动时间

适用条件:

  1. 基本的公共数据和用户信息
  2. get类获取数据接口
  3. 基本原则就是缓存不更新或者更新周期较长的数据

大体思路:

  1. 初次请求时将接口promise缓存到map对象中,map中的key名使用api名+参数拼接;下一次请求到同一key名的接口直接返回缓存中的promise;如果没有此key的promise使用正常的接口请求;

需求功能:

  1. 同一个接口,需要区分参数进行存储接口名+参数,生成唯一字符串
  2. 支持异步接口请求
  3. 支持promise
  4. 考虑并发的情况,同一接口同时触发的情况
  5. 默认关闭缓存,通过接口参数设置单独开启缓存
  6. 支持设置有效期,过期主动清除,取代惰性删除可能引起的内存溢出

实现代码:

/****************** promise方案封装 **********************/
class ItemCache {
   
   
  constructor(promise, timeout) {
   
   
      // data可存返回数据,也可存promise
      this.promise = promise
      // 设定超时时间,设定为多少秒
      this.timeout = timeout
      // 创建对象时候的时间,大约设定为数据获得的时间
      this.cacheTime = (new Date()).getTime()
  }
}
class ExpriesCache {
   
   
  // 定义静态数据map来作为缓存池
  static cacheMap =  new Map()
  // 数据是否超时
  static isOverTime(name) {
   
   
      const promise = ExpriesCache.cacheMap.get(name)
      // 没有数据 判定超时
      if (!promise) return true
      // 获取系统当前时间戳
      const currentTime = (new Date()).getTime()        
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值