接口調(diào)用頻率規(guī)范
概念介紹
小程序wx接口可分為“普通接口”和“限頻接口”。
“限頻接口”指的是一個用戶在一段時間內(nèi)不允許頻繁調(diào)用的wx接口,此類接口一般會調(diào)用到微信后臺系統(tǒng)資源,為了保護系統(tǒng),同時防止用戶資源被濫用,開發(fā)者需要對此類接口做適度的頻率限制,不能無節(jié)制地調(diào)用。
平臺會對小程序內(nèi)“限頻接口”的調(diào)用情況做監(jiān)控,如果小程序?qū)Υ祟惤涌诘恼{(diào)用頻率超出平臺的規(guī)范,將會收到站內(nèi)信提醒。系統(tǒng)會在資源緊張的情況下優(yōu)先保障合理使用的小程序的服務。
開發(fā)者可登錄小程序管理后臺-開發(fā)管理-接口設(shè)置中查看“限頻接口”調(diào)用情況。
目前,“限頻接口”包括以下接口:
頻率規(guī)范
API | 規(guī)范 | 其他說明 |
---|---|---|
wx.login | 一天的調(diào)用總次數(shù)不多于該小程序pv的兩倍,單用戶一秒鐘不能大于4次 | - |
wx.checkSession | 一天的調(diào)用總次數(shù)不多于該小程序pv的兩倍,單用戶一秒鐘不能大于4次 | - |
wx.getSetting | 一天的調(diào)用總次數(shù)不多于該小程序pv的兩倍,單用戶一秒鐘不能大于4次 | - |
wx.getUserInfo | 一天的調(diào)用總次數(shù)不多于該小程序pv的兩倍,單用戶一秒鐘不能大于4次 | - |
wx.getUserProfile | 一天的調(diào)用總次數(shù)不多于該小程序pv的兩倍,單用戶一秒鐘不能大于4次 | - |
Tips: 微信后臺會延遲一天統(tǒng)計上一天的小程序pv總數(shù)和api調(diào)用總數(shù),超過規(guī)范總數(shù)的會提醒盡快調(diào)整。
優(yōu)化方法
開發(fā)者可以參考以下方法對“限頻接口”的調(diào)用頻率做優(yōu)化:
- 把上一次調(diào)用接口的返回結(jié)果緩存下來以供后續(xù)邏輯復用,而不是重新調(diào)用接口
- 避免在定時循環(huán)的邏輯內(nèi)重復調(diào)用“限頻接口”
- 避免在頁面初始化事件
onLoad
、onShow
、onReady
中調(diào)用限頻接口,應該在小程序初始化事件onLaunch
中調(diào)用
以下是錯誤用法和正確用法示例:
- wx.getSetting 錯誤用法:
setInterval(() => {
wx.getSetting()
}, 5000)
- wx.getSetting 正確用法:
let setting
wx.getSetting({
success(res) {
setting = res
}
})
// 在需要獲取地理位置時
if (setting.authSetting['scope.userLocation']) {
wx.getLocation({
success(res) {},
fail(res) {
if (res.errMsg.indexOf('auth deny') >= 0) {
// 如果權(quán)限沒有開,引導用戶打開設(shè)置頁開啟地理位置授權(quán)
}
}
})
}
- wx.getUserInfo 錯誤用法:
Page({
onShow() {
wx.getUserInfo()
}
})
- wx.getUserInfo 正確用法:
App({
onLaunch() {
wx.getUserInfo()
}
})
需要在小程序后臺開發(fā)管理-接口設(shè)置里面全部開通就好了