import moment from 'moment'; /** * 本地缓存,时效1小时 */ export class LocalCache<K extends string, V> { constructor() { if (/LocalCache_clear/.test(window.location.search)) { localStorage.clear(); } } set(key: K, value: V): void { localStorage.setItem(this.getCacheKeyId(key), JSON.stringify(value)); } get(key: K) { const str = localStorage.getItem(this.getCacheKeyId(key)); if (!str) return; const ret = JSON.parse(str); setTimeout(() => { // 重置缓存 this.clean(key, moment().format('DD')); this.clean(key, moment().subtract(1, 'day').format('DD')); this.set(key, ret); }); return ret; } private getCacheKeyId = (key: string) => moment().format('YYYY_MM_DD_H_') + key; /** * 清除 key 当天的所有缓存 */ private clean(key: K, day: string) { const prefix = moment().format('YYYY_MM'); for (let i = 0; i < 24; i++) { const ckey = `${prefix}_${day}_${i}_${key}`; localStorage.removeItem(ckey); } } }