在微信小程序中,有时需要保存一些临时数据,例如,将用户登录后获取到的 token 保存下来,从而在用户下次打开微信小程序时维持登录状态,或者将一些经常需要从服务器中下载的数据在微信客户端中缓存起来,以提高微信小程序下次打开时的加载速度。在微信小程序中,利用数据缓存API可以实现数据的缓存,从而加快读取数据的速度。数据缓存API有很多方法,常见的数据缓存方法如下表所示。
方式 | 方法 | 说明 |
---|---|---|
异步 | wx.setStorage() | 将数据存储在本地缓存中指定的key中。会覆盖掉原来该key对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个key允许存储的最大数据长度为1MB,所有数据存储上限为10MB。 |
wx.getStorage() | 从本地缓存中异步获取指定key的内容 | |
wx.getStorageInfo() | 异步获取当前storage的相关信息 | |
wx.removeStorage() | 从本地缓存中移除指定key | |
同步 | wx.setStorageSync() | wx.setStorage()方法的同步版本 |
wx.getStorageSync() | wx.getStorage()方法的同步版本 | |
wx.getStorageInfoSync() | wx.getStorageInfo()方法的同步版本 | |
wx.removeStorageSync() | wx.removeStorage()方法的同步版本 |
wx.setStorage()方法和wx.setStorageSync()方法均可以实现缓存数据,区别就在于同步和异步。方法名以Sync结尾的都是同步方法,同步方法和异步方法的区别是,异步方法不会阻塞当前任务,而同步方法直到处理完之后才能继续向下执行。异步方法需要通过传入回调函数获取结果,而同步方法是通过返回值获取结果。如果发生错误,异步方法会执行 fail() 回调函数返回错误,而同步方法则通过 try...catch 捕获异常来获取错误信息。
var dataObj=require("data/data.js"); App({ //监听小程序初始化,当小程序初始化完成时,会触发 onLaunch(全局只触发一次) onLaunch:function(){ wx.setStorage({ key:"postList", data:dataObj.postList, success:function(res){}, fail:function(){}, complete:function(){} }) } })
缓存让小程序具备了本地存储数据的能力,它具有以下几个特点: