小程式首屏載入過慢的效能最佳化策略
一. 問題描述
01. 問題現象
小程式初次開啟首屏載入很慢,已經超出使用者等待時長。
02. 理想載入
理想狀態載入不超過5s,資料渲染不出現卡頓現象。
二. 載入機制
首屏的載入速度除了和網路有關係,和小程式自身啟動機制也有關係,首先要了解小程式的啟動機制,小程式的啟動分為冷啟動和熱啟動。
01. 冷啟動
簡介
:如果使用者首次開啟,或小程式銷燬後被使用者再次開啟,此時小程式需要重新載入啟動,即冷啟動。
觸發場景:
新使用者第一個進入小程式
使用者已經進入過小程式,但是小程式被銷燬,銷燬的原因有,小程式被刪除,小程式在後臺等待時間過長,自動銷燬了。
02. 熱啟動
簡介:如果使用者已經開啟過某小程式,然後在一定時間內再次開啟該小程式,此時小程式並未被銷燬,只是從後臺狀態進入前臺狀態,這個過程就是熱啟動。
觸發場景:
使用者開啟了小程式,在小程式沒有被銷燬時再次開啟小程式,此時小程式還能儲存使用者上一次的操作狀態。
首屏載入慢大部分原因是冷啟動時載入的資料過多,需要依賴過多的服務端的介面資料等。
三. 檢查
對於程式設計師來說,遇到問題應該解決問題。首先要要幾個基礎檢查:
01. 檢查圖片
檢查圖片包括:
1. 圖片是否過大
檢查圖片屬性,如果圖片載入過大,就利用工具壓縮圖片。此時要考慮如果圖片畫素要求很高,壓縮要注意不能失真,其次壓縮要注意等比例,留意是否不小心剪裁了圖片大小等。
2. 圖片懶載入
如果首頁要載入的有很多列表或者圖片展示,此時要注意圖片載入時長,如果超過一定時間,懶載入是個不錯的辦法。
3. 圖片是否可以用cdn託管
對於icon小圖示可以放在小程式專案image資料夾裡,但是如果圖片佔用資源,放在cdn託管既可以縮小程式碼包的大小還可以提升載入效率。
02. 檢查首屏介面耗時
一個介面一個介面的排查,在network中檢視載入的時間,逐個排查原因,所有請求最好在1s內返回結果。
03. 檢查有無錯誤日誌
在JS中如果在同步任務中,一個錯誤的發生會造成後面整段程式碼都不執行。
此時應該排查下是否有異常錯誤,避免出現首屏一直處於載入的狀態。必要的時候try catch處理。
04. 檢查介面是否使用定時器
定時器一般設定為全域性變數,或者定時器和倒數計時相關功能繫結,用定時器一定要記得及時回收。
05. 檢查基礎版本庫
如果首頁使用裡自定義組建,不同頒佈要注意基礎庫要一致。可能不同基礎庫有些功能的支援條件不一致,要做相容處理。
四. 最佳化策略
01. 分包載入
開發者透過在 app.json subpackages 欄位宣告專案分包結構
{
"pages":[
"pages/index",
"pages/logs"
],
"subpackages": [
{
"root": "packageA",
"pages": [
"pages/cat",
"pages/dog"
]
}, {
"root": "packageB",
"name": "pack2",
"pages": [
"pages/apple",
"pages/banana"
]
}
]
}
分包之後優先載入主tab,二級介面可以理解為按需載入。
分包要注意,主包不能使用二級介面的樣式或者js等,因為主包在載入時分包是不載入的。
02. 利用快取
當小程式被銷燬需要重新渲染介面時,此時冷啟動會再次請求介面載入資料,可以利用小程式提供了快取方法wx.setStorage、wx.getStorage將資料儲存在本地。
03. 不使用空白屏
所謂空白屏就是當請求介面的資料沒有被返回時,整個介面被hidden的,此時給使用者的感覺就是白屏。
推薦做法:當資料沒有被渲染時展示頁面的基本骨架,利用toast提示載入進度,給使用者反饋出載入的進度,會延長使用者的等待時間。把優先順序高的內容做優先展示,縮短白屏時間;
04. 首頁架構調整
調整頁面展示順序等,儘量讓首屏簡潔化。資料展示的儘量精簡化。
05. 渲染最佳化
避免首頁多次setData,未繫結的變數或者和介面無關的變數都不要在setData中體現,這樣的情況大多出現在一個變數可能在初版的時候使用,下一個版本更改需求,有些變數不需要渲染介面裡,但是程式設計師並有及時刪除。
06. 程式碼最佳化
第一:在樣式上,檢查wxss的使用率,這個很重要又經常被忽視,經常發生在不同版本迭代中,需求和樣式是經常被改動的,下一個版本更改沒有及時刪除掉不用的樣式,可能有些程式設計師心裡是想著有可能下次被用到,但是記得專案是有git託管的,可以藉助git查詢之前的程式碼記錄,所以不是此版本的css大膽的刪除吧。
第二:在js上,一個js可能到上千行了,這個原因可能和業務邏輯有關,也可能是你寫了太多的函式,沒有用函式的封裝處理。呼叫介面,沒有用Promise封裝或者其他封裝辦法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4289/viewspace-2826840/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 前端優化首屏載入前端優化
- 優化 SPA 首屏載入速度優化
- 前端網頁載入速度緩慢優化策略前端網頁優化
- web前端效能最佳化——圖片載入的最佳化Web前端
- 效能更優越的小程式圖片懶載入方式
- Django效能最佳化:提升載入速度Django
- WordPress程式載入慢解決教程
- 移動端首屏優化策略優化
- Git hub載入慢?下載慢?瀏覽慢?幾個小技巧讓你一鍵起飛!Git
- Vue首屏效能優化元件Vue優化元件
- VUE系列之效能最佳化--懶載入Vue
- vue實現首屏載入等待動畫 避免首次載入白屏尷尬Vue動畫
- JVM效能最佳化 —— 類載入器,手動實現類的熱載入JVM
- 小程式分包載入
- 效能最佳化的一般策略及方法
- 【慢SQL效能最佳化】 一條SQL的生命週期SQL
- 首長,Redis效能最佳化十三條軍規立好了,請過目~Redis
- 達達快送小程式效能最佳化實踐
- 如何最佳化程式的效能
- WPF效能最佳化示例:使用VirtualizingStackPanel提升介面載入速度
- 小程式分屏載入實踐
- vue-cli專案優化,縮短首屏載入時間Vue優化
- uniapp 小程式橫屏的方式APP
- 微信小程式分頁載入微信小程式
- 前端【小程式】04-小程式基礎篇【分包載入】前端
- 小程式之骨架屏
- 如何實現婚戀app原始碼中直播首屏載入優化?APP原始碼優化
- 小程式初始化載入,根據登入狀態判斷跳轉首頁還是登入頁
- 【效能優化實踐】優化打包策略提升頁面載入速度優化
- vue載入優化策略Vue優化
- 資料庫系列:MySQL慢查詢分析和效能最佳化資料庫MySql
- 車載小程式如何改善車載裝置體驗與效能?
- 小程式預載入資料實戰
- 小程式 分屏載入&下拉重新整理
- 透過pin_memory 最佳化 PyTorch 資料載入和傳輸:工作原理、使用場景與效能分析PyTorch
- 頁面圖片預載入與懶載入策略
- 鎖的最佳化策略
- 小程式如何做全域性重新載入