小程序缓存操作(本地、同步、异步)
本地缓存
- wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)可以对本地缓存进行设置、获取和清理。本地缓存最大为10MB
- 使用localStorage永久存储
- 使用uniapp进行开发的时候,可以将wx替换为uni来进行缓存的操作
异步缓存
wx.setStorage(object)
uni.setStorage(object)
- 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容
1 | wx.setStorage({ |
wx.getStorage(object)
uni.getStorage(object)
- 从本地缓存中异步获取指定 key 对应的内容。
1 | wx.getStorage({ |
wx.getStorageInfo(object)
uni.getStorageInfo(object)
- 异步获取当前storage的相关信息
1 | wx.getStorageInfo({ |
wx.removeStorage(object)
uni.removeStorage(object)
- 从本地缓存中异步移除指定 key 。
1 | wx.removeStorage({ |
同步缓存
wx.setStorageSync(key,value)
uni.setStorageSync(key,value)
- 将 value 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。
wx.getStorageSync(key)
uni.getStorageSync(key)
- 从本地缓存中同步获取指定 key 对应的内容。
wx.getStorageInfoSync
uni.getStorageInfoSync
- 同步获取当前storage的相关信息
wx.removeStorageSync(key)
uni.removeStorageSync(key)
- 从本地缓存中同步移除指定 key 。
清理缓存
wx.clearStorage()
uni.clearStorage()
- 清理本地数据缓存。
wx.clearStorageSync()
uni.clearStorageSync()
- 同步清理本地数据缓存
同步缓存和异步缓存的区别
以Sync(同步,同时)结尾的都是都是同步缓存,二者的区别是,异步不会阻塞当前任务,同步缓存直到同步方法处理完才能继续往下执行。
历史搜索
- 案例:
1 | <input type="text" class="search-icon" placeholder="请输入要搜索的内容" bindinput="searchNameInput"/> |
页面
这里有三个绑定事件
- bindinput=”searchNameInput” 获取用户输入的数据
- bindtap=”setSearchStorage” 设置本地存储
- bindtap=”deleteHistory” 删除历史搜索
1 | //获取用户输入框的值 |
e.detail.value就代表了当前输入值
当点击搜索的时候,bindtap=”setSearchStorage”
1 | //将用户输入的内容存入本地缓存,并且将搜索数据放到首页 |
流程这么走:
用户输入数据,点击搜索
如果数据不为空,加入(设置)本地缓存
去服务器搜索用户想要的数据,赋值给这个页面的变量
点击删除,去除本地这个key的value
- 这里的缓存形式的 key => value
1 | var searchData = wx.getStorageSync('searchData') || [] |
获取本地名字为’searchData’的缓存,如果’searchData’这个缓存不存在就相当于重新什么一个空数组,赋值给searchData这个变量
1 | searchData.push(this.data.inputValue) |
将用户输入的值PUSH进searchData这个变量里
1 | wx.setStorageSync('searchData', searchData) |
调用API接口,重新设置key = ‘searchData’的这个缓存的value等于searchData,下面的wx.request是请求数据的内容
1 | //从本地获取历史搜索数据 |