评论

微信小程序如何处理发版本之前的本地缓存

解决方案: 在版本更新的时候,处理清除缓存操作.

微信小程序如何处理发版本之前的本地缓存,实际开发中,回遇到比如用户搜索的关键字存本地的操作,但是如果接口调整了,返回的字段发生了变更.那么需要在发布新版本后,处理一下用户之前的本地缓存.

解决方案一: 在版本更新的时候,处理清除缓存操作. (实操失败,也算一种思路,可以试试)

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: '知道了'
                                })
                            })
                        }
                    }
                })
            }
        })        
    }
}




解决方案二: 本地存储版本号, 然后更新后得到最新的版本号,两个版本号不等,然后处理逻辑

文档地址: https://developers.weixin.qq.com/miniprogram/dev/api/open-api/account-info/wx.getAccountInfoSync.html

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



最后一次编辑于  2022-12-05  
点赞 2
收藏
评论
登录 后发表内容