微信小程序缓存-------缓存时效性

在微信小程序中,数据缓存没有设置有效期的方法,只有本地缓存功能。

相应的api

wx.setStorage(wx.setStorageSync)
wx.getStorage(wx.getStorageSync)
wx.clearStorage(wx.clearStorageSync)
可以对本地缓存进行设置、获取和清理。本地缓存最大为10MB
详情api参考官网地址

直接上代码

class storage {
    constructor(props) {
        this.props = props || {};
        this.source = wx || this.props.source;
    }
    /**
     * 获取缓存
     * @param String $key  key
     * @param String $def  若想要无缓存时,返回默认值则get('key','默认值')(支持字符串、json、数组、boolean等等)
     * @return value;
     */
    get (key, def = '') {
        const data = this.source,
            timeout = parseInt(data.getStorageSync(`${key}__separator__`) || 0);

        // 过期失效
        if (timeout) {
            if (Date.now() > timeout) {
                this.remove(key);
                return;
            }
        }
        let value = data.getStorageSync(key);
        return value ? value : def;
    }

    /**
     * 设置缓存
     * @param String $key       key
     * @param String $value     value(支持字符串、json、数组、boolean等等)
     * @param Number $timeout   过期时间(单位:分钟)不设置时间即为永久保存
     * @return value;
     */
    put (key, value, timeout = 0) {
        let data = this.source;
        let _timeout = parseInt(timeout);
        data.setStorageSync(key, value);
        if (_timeout) {
            data.setStorageSync(`${key}__separator__`, Date.now() + 1000 * 60 * _timeout);
        } else {
            data.removeStorageSync(`${key}__separator__`);
        }

        return value;
    }

    remove (key) {
        let data = this.source;
        data.removeStorageSync(key);
        data.removeStorageSync(`${key}__separator__`);
        return undefined;
    }
}
let storages = new storage();
wx.$storage = storages;
export default storages;

使用方式

mpvue直接在main.js中引入就可以 import "@/utils/storage";


image.png
image.png
image.png

你可能感兴趣的:(微信小程序缓存-------缓存时效性)