# 数据预拉取和周期性更新
基础库 3.2.1 起支持,SDK 2.43.1 起支持,FinClip Studio 2.0.18 起支持
预拉取能够在小程序冷启动的时候通过 SDK 提前向开发者的第三方服务器拉取业务数据,当代码包加载完时可以更快地渲染页面,减少用户等待时间,从而提升小程序的打开速度,提升体验。
本功能的产品操作说明请点击这里 (opens new window)
# 使用流程
# 1. 管理后台配置请求 URL
在管理后台配置,入口为【我的小程序】-【详情】-【其他】,开启数据周期性更新或数据预拉取并填写相关 URL。
# 2. 小程序设置 token
第一次启动小程序时,可调用 wx.setBackgroundFetchToken() 设置 token 字符串,改 token 会在后续 SDK 向开发者服务器请求时带上,于用给服务器校验请求合法性。
App({
  onLaunch() {
    ft.setBackgroundFetchToken({
      token: 'some token'
    })
  }
})
# 3. 启动小程序
在有配置数据周期性更新或数据预拉取的 URL 情况下,打开小程序时,SDK 会向配置的 URL 发起一个 HTTP GET 请求,其中包含的 query 参数如下,数据获取到后会将整个 HTTP body 缓存到本地。
| 属性 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| appId | string | 是 | 小程序标识 | 
| token | string | 否 | setBackgroundFetchToken 设置的 token | 
| timeStamp | number | 是 | 客户端发起请求的时间戳,单位 ms | 
| path | string | 否 | 小程序页面路径 | 
| query | string | 否 | 传给页面的 query 参数 | 
| scene | number | 否 | 进入小程序的场景值 | 
| customMiniprogramVersion | number | 否 | 小程序版本号,在开发工具上固定是 devtool | 
# 4. 在小程序中读取数据
App({
  onLaunch() {
    ft.onBackgroundFetchData(function (res) {
      console.log(res.fetchType)
      console.log(res.fetchedData)
      console.log(res.timeStamp)
      console.log(res.path)
      console.log(res.query)
      console.log(res.scene)
    })
    ft.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) // 场景值
      }
    })
  }
})
# 调试方法
FinClip Studio 需升级到支持的版本 2.0.18
1、小程序详情中会有【数据预拉取】的勾选项,勾上后重新编译小程序时会触发【数据预拉取】的请求
2、顶部帮助栏,会有【拉取周期性数据】的选项,点选后触发【拉取周期性数据】的请求

注意
若未在后台配置请求 URL,触发请求时日志栏会出现未配置 URL 的 warning,可供开发者调试识别
