zoukankan      html  css  js  c++  java
  • 小程序和钉钉发版后老版缓存的问题调研

    小程序发版后老版缓存方式

    1、 小程序运行机制

    (1)小程序启动

    小程序启动会有两种情况,一种是冷启动,一种是热启动。

            热启动:假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动;

            冷启动:用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动,即冷启动。

    (2)小程序销毁

            需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

    A、当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)小程序会被微信主动销毁

    B、当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。

    2、UpdateManager

           UpdateManager 对象,用来管理更新,可通过 wx.getUpdateManager 接口获取实例。(从基础库1.9.90才开始支持,也就是微信版本为6.6.1及以上)

    A、UpdateManager.applyUpdate()

    强制小程序重启并使用新版本。在小程序新版本下载完成后(即收到 onUpdateReady 回调)调用。

    B、UpdateManager.onCheckForUpdate(function callback)

            监听向微信后台请求检查更新结果事件。微信在小程序冷启动时自动检查更新,不需由开发者主动触发。

    C、UpdateManager.onUpdateReady(function callback)

    监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调

    D、UpdateManager.onUpdateFailed(function callback)

    监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)后回调

    代码示例

    App({
        onLaunch: function(){
            const updateManager = wx.getUpdateManager()
        
            updateManager.onCheckForUpdate(function (res) {
                // 请求完新版本信息的回调
                console.log(res.hasUpdate)
            })
     
            updateManager.onUpdateReady(function () {
                wx.showModal({
                    title: '更新提示',
                    content: '新版本已经准备好,是否重启应用?',
                    success: function (res) {
                        if (res.confirm) {
                            // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
                            updateManager.applyUpdate()
                        }
                    }
                  })
            })
     
            updateManager.onUpdateFailed(function () {
              // 新版本下载失败
            })
        }
    })

    钉钉E应用

    经过查询资料后获取到的信息:

    1、钉钉小程序E应用在发版时会有一个老版本的缓存,每次发版后直接打开E应用,其实访问的是上一个版本的缓存,这个缓存会在发版后10分钟左右自动更新成最新版本,如果想要直接看到最新版本,可以退出钉钉登录账户,并杀掉钉钉进程,这样再进去后就是直接访问的最新版本了.

    文档提示自己本地实验:微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试

    我自己在本地根据上述的提示实验过,当下次编译时,当本地不是最新版本,会提示“新版本已经准备好,是否重启应用?”,点击确定就触发UpdateManager.applyUpdate()事件,强制小程序重启。

  • 相关阅读:
    寻找金秋
    两个周末,两个湖
    桂花林上,再读“六项精进”
    锄奸杜幸,穷寇勿追
    招聘所见思考
    Xufun’s Node.js Primer
    我的软件过程,一年再读
    企业的生命期限,和组织的危机感
    头痛,偷闲,拾黄叶
    喝酒这件事,和等绿灯的习惯
  • 原文地址:https://www.cnblogs.com/mxyr/p/10855368.html
Copyright © 2011-2022 走看看