1.0.1 • Published 3 years ago

cache-center v1.0.1

Weekly downloads
3
License
ISC
Repository
github
Last release
3 years ago

CacheCenter

针对本地缓存进行集中处理,针对前端的缓存进行预处理,缓存位置为内存变量,组件或页面内使用时,可以指定暂存localStorage

一、背景

目前项目中大量使用缓存,导致首次进入时需要请求很多个参数,而且随着项目的业务增加越来越多,等待时间过长,直接影响用户体验,浪费不必要的流量。而且浏览器对本地localStorage有大小限制,会导致异常错误。所以针对上述问题,需要对此进行优化。

二、优化方案设计

  1. 主界面不直接请求缓存,由使用到的子页面模块自己确定要使用哪些缓存。
  2. 建立统一的缓存中心,子模块打开时,去缓存中心取对应的缓存,没有时loading,并请求对应的缓存。

三、旧版本兼容处理

  1. 旧版本的所有页面需要改成模板的模式加载,在加载前去缓存中心取该页面所有需要的缓存,由缓存中心处理是否需要请求,并暂存localStorage

四、缓存中心

  1. 统一处理存放缓存在主进程中,由配置项来确定是使用localStorage还是内存变量,
  2. 预加载loading效果,需要传递使用缓存的容器.
  3. 订阅缓存title,更新缓存,并发送消息到使用缓存的模块处理。(这个由后台来确认是否可以进行单条更新)
  4. 取值时返回promise对象,处理异步缓存问题,同时多个模块用到同一个缓存时,只请求第一个缓存,统一返回结果.

六、缓存更新机制

  1. 主动更新:第一次主动请求,模块获取
  2. 被动更新:收到后台的参数更新推送
  3. 事件通知:缓存信息更新时,发送事件到对应模块,看是否需要对该缓存的变化进行对应处理,如下拉框的值是否需要自动更新,否则需要等下次打开模块时获取最新值。

API

add

初始化缓存参数

* @desc: 添加初始化缓存
* @param {String} key 区分缓存请求的唯一值
* @param {Promise} promise的高阶方法 不要在这里处理数据,在callback中处理数据
* @return {Function} 返回需要缓存的键值对 ,{cache1:[],cache2:{}}

load

开始加载缓存

* @desc: 加载缓存
* @param {String} 缓存主键 
* @param {Dom} container loading container
* @return {Promise} 如果缓存已存在,直接返回该缓存的promise

preload

提前请求缓存,仅发出请求,不作数据处理,用作静默加载

* @desc: 缓存预载,不处理数据
* @param {String} key 缓存关键字 
* @return {Promise} 

update

更新缓存,这里的更新主要是指全量更新的情况,重发请求

* @desc 更新缓存
* @param key 

showLoading

显示加载进度条,可重写

1.0.1

3 years ago

1.0.0

4 years ago