微信小程序如何处理发版本之前的本地缓存,实际开发中,回遇到比如用户搜索的关键字存本地的操作,但是如果接口调整了,返回的字段发生了变更.那么需要在发布新版本后,处理一下用户之前的本地缓存.
解决方案一: 在版本更新的时候,处理清除缓存操作. (实操失败,也算一种思路,可以试试)
onLaunch: function() {
// #ifdef MP
this.mpUpdate()
// #endif
}
methods: {
mpUpdate() {
const updateManager = uni.getUpdateManager() // 小程序版本更新管理器
updateManager.onCheckForUpdate(res => { // 检测新版本后的回调
if(res.hasUpdate) { // 如果有新版本提醒并进行强制升级
uni.showModal({
content: '更新到最新版本',
showCancel: false,
confirmText: '确定',
success: res => {
if (res.confirm) {
updateManager.onUpdateReady(res => { // 新版本下载完成的回调
uni.removeStorageSync('search-history')// 处理清除缓存操作;
updateManager.applyUpdate() // 强制当前小程序应用上新版本并重启
})
updateManager.onUpdateFailed(res => { // 新版本下载失败的回调
// 新版本下载失败,提示用户删除后通过冷启动重新打开
uni.showModal({
content: '下载失败,请删除当前小程序后重新打开',
showCancel: false,
confirmText: '知道了'
})
})
}
}
})
}
})
}
}
解决方案二: 本地存储版本号, 然后更新后得到最新的版本号,两个版本号不等,然后处理逻辑
onShow(){
let versionNum = uni.getStorageSync('version') || '';
if(!versionNum){
uni.removeStorageSync('search-history')
}
let accountInfo = wx.getAccountInfoSync();
let version = accountInfo.miniProgram.version;
uni.setStorageSync("version", version);
this.initHistory(); // 初始化搜索历史记录
},
小程序内的缓存,首页调用wx.clearStorage 可以清掉。
旧的版本可以用UpdateManager对象来管理更新
https://developers.weixin.qq.com/minigame/dev/api/base/update/UpdateManager.html