网站内容更新不及时(微信小程序启动会马上触发新版本的下载代码包)
优采云 发布时间: 2022-04-07 11:10网站内容更新不及时(微信小程序启动会马上触发新版本的下载代码包)
这几天一直在做微信小程序的二次开发,每天都要发布程序,但是发布后,微信上看到的小程序和之前一模一样,而且有根本没改,但是我本地改了,而且没有人不验证合法域名。为什么是这样? ? ? ? ?
这和小程序的更新机制有关,因为小程序的更新机制是异步的,所以有些用户不会立即应用新版本。
小程序启动有两种情况,一种是“冷启动”,一种是“热启动”。如果用户已经打开了某个小程序,然后在一定时间内再次打开该小程序,此时无需重启,只需将后台状态的小程序切换到前台即可,此过程是热的开始;冷启动是指用户第一次打开小程序或小程序被微信主动销毁后再次打开时,需要重新加载启动小程序。
小程序的异步更新发生在冷启动过程中。当发现新版本时,会异步下载新版本的代码包,但不会立即应用最新版本。它只会在小程序下一次冷启动后应用。在新版本上。
于是我在网上找到了这个方法:
异步更新+强制更新:同步校验更新和模块热替换的折中,即保持异步更新机制,提供异步下载小程序代码包后重启小程序的能力。当遇到紧急问题时,可以立即解决。
小程序冷启动时,会自动向微信后台请求新版本信息。如果有新版本,会立即触发新版本的下载。
代码:
1 // wx.getUpdateManager 在 1.9.90 才可用,请注意兼容
2 const updateManager = wx.getUpdateManager()
3
4 updateManager.onCheckForUpdate(function (res) {
5 // 请求完新版本信息的回调
6 console.log(res.hasUpdate)
7 })
8
9 updateManager.onUpdateReady(function () {
10 wx.showModal({
11 title: '更新提示',
12 content: '新版本已经准备好,是否马上重启小程序?',
13 success: function (res) {
14 if (res.confirm) {
15 // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
16 updateManager.applyUpdate()
17 }
18 }
19 })
20 })
21
22 updateManager.onUpdateFailed(function () {
23 // 新的版本下载失败
24 })
那么我该如何在本地测试这个东西呢?
然后你可以在下次编译时模拟更新。
点击这里查看官方文档