@clayder-ran/browser-cache

base localStorage or sessionStorage; cache data in browser;

Usage no npm install needed!

<script type="module">
  import clayderRanBrowserCache from 'https://cdn.skypack.dev/@clayder-ran/browser-cache';
</script>

README

说明文档

  • 存储内容在浏览器的localStorage或sessionStorage

同步模式

  • 地址: index.js > SessionStorage 或 LocalStorage
  • expire单位是毫秒;
  • value是初始值;
  • debug开启时, 有一些打印;
  • 读取和设置数据时, 支持复合的键, 如 users[1].age
/* 存储实例 */
const store = new LocalStorage({
    key: "aaa",
    expire: 1000 * 60 * 1,
    value: {
        name: "默认名称",
        items: [{}, {}, {
            name: "默认user名称"
        }]
    },
    debug: false,
});

/* 存储 */
store.set('person', '名称')

/* 读取 */
let name = store1.get('person')

/* 监听数据更新 */
store.listen("items[2].name", (curr, prev) => {
    /* curr: 更新后的数据 */
    /* prev: 更新前的数据 */
});

/* 手动禁用当前数据, 数据有更新后, 继续可用 */
store.disable()

/* 清除 */
store.clear()

异步模式

与同步模式的差异

  • 地址: index.js > AsyncStorage
  • value属性接收Promise返回Promise的函数, 返回值是存储的数据;
  • expire标识过期后, 自动用value属性获取新数据并缓存;
  • 一般不用set方法;
/* 存储实例 */
const store = new AsyncStorage({
    key: "bbb",
    expire: 1000 * 60 * 60 * 1,
    value: () => {
        return checkLogin().then(res => {
            if (isDefObj(res)) {
                const {
                    user_info: userInfo = {}
                } = res || {};
                return userInfo;
            } else {
                return null;
            }
        });
    },
    debug: false
});

/* 读取 */
store.get('users[2]').then(info => {
    /* 第二个用户的信息: info */
})

/* 手动禁用当前数据, 数据有更新后, 继续可用 */
store.disable()

/* 清除 */
store.clear()

适配保险的缓存

  • 地址: insurance.js > CacheInsuranceStorage
  • 更适用于保险数据的缓存;
  • 基于 SessionStorage 的拓展;
  • 数据过期后, 从初始化数据中解析, 不会返回空;