预拉取能够在小程序冷启动(第一次打开或已被销毁)的时候通过微信后台提前向第三方服务器拉取业务数据,当代码包加载完时可以更快地渲染页面,减少用户等待时间,从而提升小程序的打开速度 。
(1)后台配置
开发->开发管理->开发设置->填写数据下载地址,只支持 HTTPS
(2)设置token验证身份
字符串可以跟用户态相关,会在后续微信客户端向开发者服务器请求时带上,便于给后者校验请求合法性。
一次启动小程序时,调用wx.setBackgroundFetchToken()设置一个TOKEN字符
App({
onLaunch() {
wx.setBackgroundFetchToken({
token: 'xxx'
})
}
})
(3)微信客户端提前拉取数据
当用户打开小程序时,微信服务器将向开发者服务器(上面配置的数据下载地址)发起一个HTTP GET请求,其中包含的query参数如下,数据获取到后会将整个HTTP body缓存到本地。
appid 小程序标识。
token 前面设置的TOKEN。
code 用户登录凭证,未设置TOKEN时由微信侧预生成,可在开发者后台调用auth.code2Session,换取openid等信息。
timestamp 时间戳,微信客户端发起请求的时间
path 打开小程序的路径。
query 打开小程序的query。
scene 打开小程序的场景值。
(4)读取数据
App({
onLaunch() {
wx.getBackgroundFetchData({
fetchType: 'pre',
success(res) {
console.log(res.fetchedData) 缓存数据
console.log(res.timeStamp) 客户端拿到缓存数据的时间戳
console.log(res.path) 页面路径
console.log(res.query) query参数
console.log(res.scene) 场景值
}
})
}
})