智能小程序新增Page.onInit功能,有效提高性能

爲進一步幫助您提高小程序性能,縮短小程序頁面渲染時間,智能小程序上線了一個新的生命週期 Page.onInit,您可在3.160.12 及以上的基礎庫版本中使用。html

更多內容查看開發者社區/更多招聘信息小程序

有效提高性能

百度知道小程序爲例,使用 Page.onInit 進行優化後,上屏時長約提高了 210ms服務器

如下是百度知道、百度百科和寶寶知道使用Page.onInit後的收益:網絡

小程序 收益(單位 ms)
百度知道 210
百度百科 100
寶寶知道 150

什麼是Page.onInit

Page.onInit 是百度智能小程序提供一種頁面級別的生命週期。該生命週期函數執行時機遠早於頁面中的其餘生命週期。app

若是您在Page.onInit中去發起網絡請求,會提早獲取頁面數據。所以會縮短頁面的渲染時間,極大提高小程序的用戶體驗。函數

若是您對小程序啓動原理感興趣,可參考下圖小程序的啓動流程,Page.onInit是在收集initData發送setInitData後當即執行。因而可知,頁面主數據的請求放在 onInit 中,將快於頁面的其餘生命週期。 若是您想了解Page.onInit的細節原理,可參考下圖,小程序是在 setInitData 以後當即執行Page.onInit工具

若是把主數據請求從 Page.onLoad 轉移到 Page.onInit 中,將極大提高小程序的頁面加載性能。性能

開發者能夠在onInit中向服務器請求數據,並執行setData。圖中展現了setData的兩種時機,同時應注意:優化

  1. 若是setData發出的時機早於渲染線程的 FCP,那麼在onLoad中將能獲取到本次setData的視圖信息。
  2. 若是setData晚於 FCP,那麼onLoad中將獲取不到本次setData的視圖信息。

使用建議

關於Page.onInit的接口文檔和使用說明,請閱讀官方文檔onInit(Object query)插件

此處列舉一些onInit的使用限制和建議:

  1. 不能進行任何依賴視圖層的操做,包括且不限於:selectComponentselectAllComponentsswan.createSelectorQueryswan.createMapContextswan.createCameraContextswan.createCanvasContext等;
  2. 因爲並不是全部版本的基礎庫都支持今生命週期,開發者能夠參考官方文檔中的代碼片斷,增長兼容邏輯;
  3. 若是您的小程序在邏輯線程初始化階段存在較大瓶頸,那麼使用Page.onInit可能不會有明顯效果。建議從減小動態庫和插件的使用、減小App.onLaunch耗時等角度進行優化。

驗證方式

您有兩種方式驗證Page.onInit的相關功能:

  1. 真機驗證:使用 11.20 及以上版本的百度 APP 。
  2. 開發者工具:需安裝 3.8.0 及以上穩定版或rc版的開發者工具,並將基礎庫版本設置爲3.160.12以上,下載地址.

最後,感謝各位開發者積極投身百度小程序的開發當中,在開發過程當中有任何問題均可以在社區與官方或其餘開發者進行互動,也可將您的意見發送郵件至smartprogramtech@baidu.com,期待您的參與!

相關文章
相關標籤/搜索