當(dāng)前位置:首頁(yè) > IT技術(shù) > 微信平臺(tái) > 正文

提高微信小程序的應(yīng)用速度
2021-10-22 10:01:58

?

?

一、是什么

小程序啟動(dòng)會(huì)常常遇到如下圖場(chǎng)景:

?

?

這是因?yàn)?,小程序首次啟?dòng)前,微信會(huì)在小程序啟動(dòng)前為小程序準(zhǔn)備好通用的運(yùn)行環(huán)境,如運(yùn)行中的線(xiàn)程和一些基礎(chǔ)庫(kù)的初始化

然后才開(kāi)始進(jìn)入啟動(dòng)狀態(tài),展示一個(gè)固定的啟動(dòng)界面,界面內(nèi)包含小程序的圖標(biāo)、名稱(chēng)和加載提示圖標(biāo)。此時(shí),微信會(huì)在背后完成幾項(xiàng)工作:

  • 下載小程序代碼包
  • 加載小程序代碼包
  • 初始化小程序首頁(yè)

下載到的小程序代碼包不是小程序的源代碼,而是編譯、壓縮、打包之后的代碼包

整體流程如下圖:

?

?

二、手段

圍繞上圖小程序的啟動(dòng)流程, 我們可以從加載、渲染兩個(gè)緯度進(jìn)行切入:

加載

提升體驗(yàn)最直接的方法是控制小程序包的大小,常見(jiàn)手段有如下:

  • 代碼包的體積壓縮可以通過(guò)勾選開(kāi)發(fā)者工具中“上傳代碼時(shí),壓縮代碼”選項(xiàng)

  • 及時(shí)清理無(wú)用的代碼和資源文件

  • 減少資源包中的圖片等資源的數(shù)量和大小(理論上除了小icon,其他圖片資源從網(wǎng)絡(luò)下載),圖片資源壓縮率有限

并且可以采取分包加載的操作,將用戶(hù)訪(fǎng)問(wèn)率高的頁(yè)面放在主包里,將訪(fǎng)問(wèn)率低的頁(yè)面放入子包里,按需加載

當(dāng)用戶(hù)點(diǎn)擊到子包的目錄時(shí),還是有一個(gè)代碼包下載的過(guò)程,這會(huì)感覺(jué)到明顯的卡頓,所以子包也不建議拆的太大,當(dāng)然我們可以采用子包預(yù)加載技術(shù),并不需要等到用戶(hù)點(diǎn)擊到子包頁(yè)面后在下載子包

?

?

渲染

關(guān)于微信小程序首屏渲染優(yōu)化的手段如下:

  • 請(qǐng)求可以在頁(yè)面onLoad就加載,不需要等頁(yè)面ready后在異步請(qǐng)求數(shù)據(jù)
  • 盡量減少不必要的https請(qǐng)求,可使用 getStorageSync() 及 setStorageSync() 方法將數(shù)據(jù)存儲(chǔ)在本地
  • 可以在前置頁(yè)面將一些有用的字段帶到當(dāng)前頁(yè),進(jìn)行首次渲染(列表頁(yè)的某些數(shù)據(jù)--> 詳情頁(yè)),沒(méi)有數(shù)據(jù)的模塊可以進(jìn)行骨架屏的占位

在微信小程序中,提高頁(yè)面的多次渲染效率主要在于正確使用setData

  • 不要過(guò)于頻繁調(diào)用setData,應(yīng)考慮將多次setData合并成一次setData調(diào)用
  • 數(shù)據(jù)通信的性能與數(shù)據(jù)量正相關(guān),因而如果有一些數(shù)據(jù)字段不在界面中展示且數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜或包含長(zhǎng)字符串,則不應(yīng)使用setData來(lái)設(shè)置這些數(shù)據(jù)
  • 與界面渲染無(wú)關(guān)的數(shù)據(jù)最好不要設(shè)置在data中,可以考慮設(shè)置在page對(duì)象的其他字段下

除此之外,對(duì)于一些獨(dú)立的模塊我們盡可能抽離出來(lái),這是因?yàn)樽远x組件的更新并不會(huì)影響頁(yè)面上其他元素的更新

各個(gè)組件也將具有各自獨(dú)立的邏輯空間。每個(gè)組件都分別擁有自己的獨(dú)立的數(shù)據(jù)、setData調(diào)用

三、總結(jié)

「小程序啟動(dòng)加載性能」:

  • 控制代碼包的大小
  • 分包加載
  • 首屏體驗(yàn)(預(yù)請(qǐng)求,利用緩存,避免白屏,及時(shí)反饋

「小程序渲染性能」:

  • 避免不當(dāng)?shù)氖褂胹etData
  • 使用自定義組件

參考文獻(xiàn)

  • https://juejin.cn/post/6969779451177484296

本文摘自 :https://www.cnblogs.com/

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >