沈陽工學院信息與控制學院 趙浩翔 韓飛
隨著微信小程序的崛起,開發者對小程序API 的性能要求度越來越高,API 的性能直接影響的是用戶在運行時的速率與效能。用戶加載壓力過大,會導致系統癱瘓甚至用戶端出現加載延時或加載失敗等不健康狀態的系統表現,因此需要對其進行一系列測試,依此用于開發時決定使用的方案。
依照官方文檔可知,db.RegExp()是小程序云開發內對集合進行模糊查詢,此類查詢與JavaScript 原方法查詢方式類似,但原方法查詢flag 僅支持i(不區分大小寫)、m(跨行匹配;讓開始匹配符^或結束匹配符時除了匹配字符串的開頭和結尾外,還匹配行的開頭和結尾)還支持s(讓.可以匹配包括換行符在內的所有字符)。在小程序開發時,系統可能無法辨別一些正則符號,因此在編寫程序時盡量避免使用正則。
依然就db.RegExp()函數來講const db=wx.cloud.database(), //初始化數據庫函數db.collction(‘database’).where({ //調用數據庫database word_value:db.RegExp({ //匹配方法字段值:模糊查詢函數
regexp:this.data.search, //模糊查詢條件,并監視輸入內容進行對數據庫調用
opinions:i, //flag 值 不區分大小寫
})
.get({ //獲取數據庫內與其輸入匹配的值
success:res=>{ //匹配成功
this.setData({ //刷新頁面數據
data=res.data, //返回data 值
})
console.log (“[查詢成功]:”,res) //查詢成功打印匹配值至控制臺
}
})
})
首先查詢數據量小于15w大于10w的數據,并每次以5w次數據累加測試,在數據累加到25w左右后,明顯在使用模糊查詢構造器后性能有所降低并出現少許的加載速率延遲,雖然云端檢索器內沒有命中記錄,但卻開始對系統性能有了明顯的影響,再當數據量達到28.7w 時系統性能已經有了明顯的影響,可知在數據量達到29w后,已經不能再次進行進一層的深度查詢了,在此可以粗略計算在小程序推廣以后,假設平均每天訪問量共有10w人次,數據量為2w,根據模擬測試的結果得知,最大不得超過5000 人次/s。
在使用db.RegExp()API 函數時,首先需要看數據量的大小,如果數據量較小,則不必考慮系統性能的影響,當數據量非常大的情況下,可以嘗試使用分塊儲存為靜態文件以減小系統負擔。