89 lines
2.0 KiB
JavaScript
89 lines
2.0 KiB
JavaScript
// 缓存相关常量
|
|
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
|
|
} |