// 缓存相关常量 const CACHE_PREFIX = 'API_CACHE_' const CACHE_EXPIRE_TIME = 5 * 60 * 1000 // 默认缓存时间5分钟 /** * 获取缓存数据 * @param {string} key - 缓存键名 * @returns {any} 缓存数据(过期返回null) */ export const getCache = (key) => { try { const cacheData = uni.getStorageSync(CACHE_PREFIX + key) if (cacheData && cacheData.expireTime && Date.now() < cacheData.expireTime) { return cacheData.data } // 缓存过期,清除 uni.removeStorageSync(CACHE_PREFIX + key) return null } catch (e) { console.error('获取缓存失败:', e) return null } } /** * 设置缓存数据 * @param {string} key - 缓存键名 * @param {any} data - 要缓存的数据 * @param {number} expireTime - 过期时间(毫秒),默认5分钟 */ export const setCache = (key, data, expireTime = CACHE_EXPIRE_TIME) => { try { const cacheData = { data: data, expireTime: Date.now() + expireTime } uni.setStorageSync(CACHE_PREFIX + key, cacheData) } catch (e) { console.error('设置缓存失败:', e) } } /** * 清除指定缓存 * @param {string} key - 缓存键名 */ export const clearCache = (key) => { try { uni.removeStorageSync(CACHE_PREFIX + key) } catch (e) { console.error('清除缓存失败:', e) } } /** * 清除所有API缓存 */ export const clearAllCache = () => { try { const keys = uni.getStorageInfoSync().keys || [] for (const key of keys) { if (key.startsWith(CACHE_PREFIX)) { uni.removeStorageSync(key) } } } catch (e) { console.error('清除所有缓存失败:', e) } } /** * 生成请求缓存键名 * @param {string} url - 请求URL * @param {object} data - 请求参数 * @param {string} method - 请求方法 * @returns {string} 缓存键名 */ export const generateCacheKey = (url, data, method) => { const params = JSON.stringify(data || {}) return `${method}_${url}_${params}` } export default { getCache, setCache, clearCache, clearAllCache, generateCacheKey }