前端缓存处理

1. 何时使用

用于处理sessionStorage和localStorage的前端缓存数据。 重新登录时,业务缓存的数据会全部清空。

2. 如何使用

  1. import { viewModel } from 'nc-lightapp-front';
  2. let { setGlobalStorage, getGlobalStorage, removeGlobalStorage } = viewModel;

3. 示例

localStorage

//1.若存储对象,必须先转为字符串
setGlobalStorage('localStorage', 'ncc', JSON.stringify(obj), ()=>{
    //存储缓存失败的处理函数
    //联查需要处理缓存存储失败的情况,失败时,把缓存信息转后台存放
});
//2.同样获取时,需要parse为对象
JSON.parse(getGlobalStorage('localStorage', 'ncc'))
//3.删除缓存,联查场景,缓存不用时,建议立马删除
removeGlobalStorage('localStorage', 'ncc')


//4.若存储值是字符串,可以直接存储
setGlobalStorage('localStorage', 'ncc1', nccColor, ()=>{
    //存储失败的处理函数
});
getGlobalStorage('localStorage', 'ncc1')
removeGlobalStorage('localStorage', 'ncc1')
sessionStorage
//1.若存储对象,必须先转为字符串
setGlobalStorage('sessionStorage', 'ncc', JSON.stringify(obj), ()=>{
    //存储缓存失败的处理函数
    //联查需要处理缓存存储失败的情况,失败时,把缓存信息转后台存放
});
//2.同样获取时,需要parse为对象
JSON.parse(getGlobalStorage('sessionStorage', 'ncc'))
//3.删除缓存,联查场景,缓存不用时,建议立马删除
removeGlobalStorage('sessionStorage', 'ncc')


//4.若存储值是字符串,可以直接存储
setGlobalStorage('sessionStorage', 'ncc1', nccColor, ()=>{
    //存储失败的处理函数
});
getGlobalStorage('sessionStorage', 'ncc1')
removeGlobalStorage('sessionStorage', 'ncc1')

sessionStorage

//1.若存储对象,必须先转为字符串
setGlobalStorage('sessionStorage', 'ncc', JSON.stringify(obj), ()=>{
    //存储缓存失败的处理函数
    //联查需要处理缓存存储失败的情况,失败时,把缓存信息转后台存放
});
//2.同样获取时,需要parse为对象
JSON.parse(getGlobalStorage('sessionStorage', 'ncc'))
//3.删除缓存,联查场景,缓存不用时,建议立马删除
removeGlobalStorage('sessionStorage', 'ncc')


//4.若存储值是字符串,可以直接存储
setGlobalStorage('sessionStorage', 'ncc1', nccColor, ()=>{
    //存储失败的处理函数
});
getGlobalStorage('sessionStorage', 'ncc1')
removeGlobalStorage('sessionStorage', 'ncc1')

4. API

方法 说明 参数: 说明-类型-默认值 返回值 备注
setGlobalStorage(store, key, value, error) 设置某条缓存数据 store缓存存储位置-string-‘localStorage’
key缓存key-string-无
value缓存值-string-无
error设置缓存出现异常(存储失败)时的处理函数-function-无

| 无 | 如:setGlobalStorage(‘localStorage’,’NCCFlag’, ‘1’),注意在error中一定处理好存储失败的适配 | | getGlobalStorage(store, key) | 获取某条缓存数据 | store缓存存储位置-string-‘localStorage’
key缓存key-string-无 | string | getGlobalStorage(‘sessionStorage’,’NCCFlag1’) | | removeGlobalStorage(store, key) | 删除某条缓存数据 | store缓存存储位置-string-‘localStorage’
key缓存key-string-无 | 无 | removeGlobalStorage(‘localStorage’,’NCCFlag’) |

5. 注意事项

5.1 使用 GlobalStorage 跨页签传递少量数据

一定要注意

  • 取完数据立即删除
  • 做好存储数据失败的兼容处理(因为只有5M,大范围使用可能会取不到)

    5.2 多页应用中跨页签传递数据规范

    背景介绍
    NCCloud中存在跨模块或跨领域联查的场景,如:A页面联查B页面时,B页面以新页签的形式打开;B页面初始化时,又需要A页面的数据。 与领域开发交流发现,大家普遍使用以下两种不规范的方式从A页面向B页面传递数据:
  1. 向url中传参数 (缺陷:一是为了安全考虑,url中不能有敏感参数;二是url传递参数有限,只允许2048个字节,否则IE下节点打不开)
  2. 使用前端缓存方案也就是平台提供的GlobalStorage API (缺陷:存储数据量有限制,只允许存5M)大数据量跨页签传递规范做法是:

    大数据量跨页签传递规范
  3. 若传递的数据可以根据条件后台查询,则在B页签初始化时,重新向后台发请求查询A页签数据。

  4. 若A页签的数据是前端的临时数据,则需要在跳转前把临时数据存到后台,在B页签再重新向后台查一次。

    6. 更新日志