欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

小程序怎么優(yōu)化

這篇文章主要介紹了小程序怎么優(yōu)化,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供貴溪企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站設計、成都網(wǎng)站建設、H5建站、小程序制作等業(yè)務。10年已為貴溪眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

優(yōu)化項

1. 合理的使用分包

微信小程序的主要特點是啟動快速,為了這一特性,官方因此限制了包的大小,上限為 2M。

分包是小程序優(yōu)化的第一要務,能有效提高小程序啟動速度,以及頁面打開速度。

包分為【主包】【普通分包】【獨立分包】。

【主包】應該只放置啟動頁或者TabBar頁面。

【普通分包】放置非TabBar頁面的其他頁面,推薦按照頁面數(shù)量或者模塊劃分多個分包,減少分包的大小,當用戶進入對應分包頁面的時候才會去下載這個包,這也實現(xiàn)了包的按需加載,避免了資源浪費。當小程序從普通分包中的某個頁面的時候啟動時,需要首先下載主包,然后在下載分包。

【獨立分包】放置一些獨立性較高的頁面,當小程序從獨立分包中的頁面啟動時,只會下載獨立分包,從而大大提高小程序啟動速度,當用戶進入TabBar頁面或者其他普通分包頁面才回去下載對應的包。

獨立分包中不能有任何全局的東西,包括組件,登錄等,引入任何其他包中的資源都會出錯。

作者建議梳理好頁面和功能再分包,分包的界限并不是包的大小超過了 2M,而是要靈活的根據(jù)業(yè)務和功能來進行劃分。在如今正常網(wǎng)絡情況下,2M的分包和 500KB的分包的下載可能用戶感知差距不會特別大,但是如果是在弱網(wǎng)環(huán)境下,這兩者會造成用戶白屏的時間上就有很大的差距(親身經(jīng)歷,可以說是掏心掏肺了)。

比如,我會將那些可以由TabBar頁面直接進入且頻率較高的二級頁面放入一個分包,然后其他更深層次的頁面或者那些不是那么重要的頁面分成一個包,又或者將整個訂單業(yè)務模塊的頁面分成一個包。

包分好了,自然不能少了【分包預下載】??梢园凑展倬W(wǎng)的規(guī)則進行配置,當用戶進入某個頁面時,提前下載包。

2. 按需注入

小程序下載完包之后,會將打開頁面所在包的全部JS合并注入,一些未訪問的頁面以及未用到的自定義組件也會被注入到運行環(huán)境當中。影響注入耗時和內(nèi)存占用。我們希望的是當包下載完成后,只注入我們即將打開的頁面的代碼就行。

這也是小程序啟動或跳轉(zhuǎn)進入分包頁面影響白屏時間的一點。

{
    "lazyCodeLoading" : "requiredComponents"
}

3. 明確 setData 的幾個調(diào)用原則

小程序是以微信客戶端為宿主運行的,即wxml、wxs、wxss都是運行在客戶端的,運行環(huán)境又分成了兩個線程,一個渲染線程,一個邏輯線程。渲染層使用 WebView 進行渲染, 邏輯層使用JSCore運行JS代碼。wxmlwxss工作在渲染線程,而wxs工作在邏輯線程。那兩個線程之間怎么通信呢?

  • 通過客戶端作為中轉(zhuǎn)站進行通信

渲染層觸發(fā)事件響應到客戶端,邏輯層通過setData傳送數(shù)據(jù)到客戶端,兩邊的數(shù)據(jù)都會被轉(zhuǎn)換成字符串之后進行傳輸,客戶端再分別做出響應,并且響應并非實時的。意味著在邏輯層觸發(fā)setData頁面并不會馬上更新,會有一些延遲渲染層才會更新。

回到問題,setData在邏輯層調(diào)用,讓渲染層快速響應取決于邏輯層到客戶端的數(shù)據(jù)傳輸效率,而這個傳輸效率又取決于你傳輸數(shù)據(jù)的大小,所以在調(diào)用setData的時候應該盡可能減少數(shù)據(jù)傳輸大小。

Native會將wxml轉(zhuǎn)換成 js對象,然后和setData傳進來的對象做差異化對比,將差異化渲染到視圖上。

綜上原理,我們調(diào)用setData應該遵循幾個原則:

  • 盡可能減小需要 setData數(shù)據(jù)的大小,JSON.stringify后不超過 256KB。

  • 避免將不需要渲染的數(shù)據(jù)(不在wxml中綁定的數(shù)據(jù))傳入setData,減少差異對比耗時。

  • 避免過于頻繁調(diào)用setData,會導致邏輯層業(yè)務繁忙,一直在處理setData的傳輸隊列,而導致抽不開身去處理渲染層的響應,從而導致渲染阻塞,頁面出現(xiàn)卡頓,甚至setData無效。如果可以的話,可以采用節(jié)流等方式進行優(yōu)化。

  • 盡可能將多個需要更新的數(shù)據(jù)合并為一次setData,減少通信過程。

  • 避免后臺頁面觸發(fā)setData,也會占用Js線程,有可能會造成阻塞,導致真正需要setData的數(shù)據(jù)沒有響應

減小setData的數(shù)據(jù)大小通常在列表場景中,通常只更新需要更新的下標:

const needRefresh = `list[${index}]`
// 寫法一
setData({
    [needRefresh]: '新值'
})

// 寫法二
setData({
    [`list[${index}]`]: '新值'
})

// 寫法三
setData({
    'list[0]': '新值'
})

// 寫法四
const needRefresh = `list[${index}].disabled`
setData({
    [needRefresh]: '新值'
})

// 寫法5 更新對象
setData({
    'personal.name':'xxx'
})

如果有變量,就需要放在[]內(nèi)。

4. 控制圖片大小比例

圖片太大會增加下載時間和內(nèi)存的消耗,并且為了用戶體驗,應該控制圖片的高寬比例,防止圖片變形或者被裁切(這個問題可以根據(jù)imagemode屬性進行調(diào)整)。

一個合格的圖片應該滿足以下兩點:

  • 圖片寬高乘積 <= 實際顯示寬高乘積 * (設備像素比 ^ 2)。

  • 顯示的高/寬與原圖的高/寬不超過 15%

由于這些圖片都出自 UI,所以在這一條優(yōu)化上你需要做的是:拿著這兩條指標去跟 UIbattle。

good lucky ~

以上第一條就是和設備的【dpr】相關,移動端開發(fā)一定要理解【dpr】,這里就不多贅述了。

我們應該合理的采用圖片資源,例如在【dpr】為 2 的設備上,一個 60x60的元素區(qū)域顯示的圖片為了兼顧清晰度與資源大小,圖片大小不應該超過 120x120, 同理,【dpr】為 3 設備,圖片應該不超過 180x180。

我們小程序的資源都放在cdn上,可以利用cdn的圖片云處理功能對資源請求進行控制,我司用的七牛云和又拍云,如下:

// 七牛云
`${_src}?imageMogr2/thumbnail/!${scaleRatio}p`

// 又拍云
`${_src}!/scale/${scaleRatio}`

更多云處理功能可以挪步官網(wǎng):七牛云(https://developer.qiniu.com/dora/8255/the-zoom)  和又拍云(https://help.upyun.com/knowledge-base/image/)

我們在小程序內(nèi)自定義了圖片組件 cus-image , 該組件會根據(jù)【dpr】對圖片進行云處理。并提供了 ratio 屬性靈活調(diào)整圖片大?。ㄒ驗檫\營方上傳的圖片可能在不同尺寸的元素區(qū)域內(nèi)引用,所以需要開發(fā)人員靈活控制)。

5. 避免短時間內(nèi)發(fā)起太多請求

小程序中wx.request、wx.uploadFile、wx.downloadFile的發(fā)起的網(wǎng)絡請求短時間內(nèi)最大并發(fā)限制是 10個,超過 10個就會導致請求阻塞。而圖片請求的并發(fā)最大數(shù)量為6。

短時間怎么去界定呢?

  • 【網(wǎng)絡請求】耗時超過 300ms 的請求并發(fā)數(shù)不超過 10 個(一般不會出現(xiàn)這個問題,如果有這個問題那可能該考慮拆分頁面、拆分業(yè)務或者合并接口了。)

  • 【圖片請求】同域名耗時超過 100ms 的圖片請求并發(fā)數(shù)不超過 6 個

例如:300ms內(nèi)發(fā)送了12個請求,其中10個請求在300ms內(nèi)就請求完成了,只有2個請求超過300ms,這樣是沒有問題的。

【解決方案】

  • 在接口請求上我們應該盡可能的減少請求數(shù)量。

  • 圖片可以設置懶加載lazy-load。

  • 圖標可以使用雪碧圖。

  • 將圖片資源拆分在多個域名下。

  • 自定義一個分片處理函數(shù),將請求拆分成數(shù)個階段發(fā)出。

function interelTasks(task,wait){
    this.data.timer = setInterval(()=>{
        task()
    }, wait)
}

async function task(promiseList = []){
    const result = await promise.all(promiseList)
    // do something
}

叨擾一句:有些時候在請求數(shù)量限制范圍內(nèi),我們應該對沒有先后順序的接口進行并發(fā)處理,提高接口處理效率。

6. 請求耗時優(yōu)化

這一點主要體現(xiàn)在兩個方面——【接口】和【靜態(tài)資源】。

【接口】基本上不應該超過1000ms,哪怕是幾百毫秒也可能需要做一些優(yōu)化了,基本上正常速度在10-200ms,個別接口幾百也正常,大部分都應該不超過500ms(后端大佬請消消氣)。

【靜態(tài)資源】首先從資源的大小考慮出發(fā),大部分資源是圖片,可以參考上面的圖片大小標準。其次考慮資源緩存,對于小程序而言,靜態(tài)資源基本上是存放在cdn上的,設置緩存可以有效的提高客戶端表現(xiàn)性能。

這邊給大家分享一個圖片壓縮網(wǎng)站:https://tinypng.com/

7. 避免使用過大的 WXML 節(jié)點數(shù)目

建議一個頁面使用少于 1000 個 WXML 節(jié)點,節(jié)點樹深度少于 30 層,子節(jié)點數(shù)不大于 60 個。一個太大的 WXML 節(jié)點樹會增加內(nèi)存的使用,樣式重排時間也會更長,影響體驗。

頁面的節(jié)點數(shù)包含所有子節(jié)點數(shù),需要注意的是子節(jié)點數(shù),若一個子節(jié)點數(shù)大于60的時候,或許你就該考慮對組件或者頁面進行重新劃分了。

基本功!

8. 使用骨架屏

骨架屏相信大家都不陌生,如果我們的優(yōu)化手段都用盡了,頁面需要加載的資源本身就比較多,那骨架屏也是我們退而求其次的最佳方案了,也算是“曲線救國“了。

實現(xiàn)骨架屏的方式有多種,你可以自己寫一個骨架組件,也可以用一些生成骨架屏的插件。除此之外,小程序還提供了白嫖方案,開發(fā)者工具提供了自動生成骨架屏代碼的能力。

詳情請訪問 https://developers.weixin.qq.com/miniprogram/dev/devtools/skeleton.html

9. 合理的進行組件拆分并減小data的大小

微信小程序的更新是基于組件的,自定義組件的更新只會在組件內(nèi)部,這能減少差異比較帶來的耗時。

控制data的大小主要是為了減少內(nèi)存消耗,比如在data中定義一些圖片路徑的變量,如果可以,我更推薦通過background的方式去加載一些圖片。

10. 滾動區(qū)域設置慣性滾動

慣性滾動會使?jié)L動比較順暢,在安卓下默認有慣性滾動,而在 iOS 下需要額外設置 -webkit-overflow-scrolling: touch 的樣式。

11. 擴大點擊元素的可點擊區(qū)域

微信規(guī)定最小可點擊區(qū)域應該不小于 20x20像素。這種樣式問題不多贅述了,八仙過海,各顯神通。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“小程序怎么優(yōu)化”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!

當前題目:小程序怎么優(yōu)化
URL標題:http://chinadenli.net/article32/ppcjpc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設、網(wǎng)站設計公司、網(wǎng)站收錄、云服務器、網(wǎng)站維護、移動網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設
亚洲国产天堂av成人在线播放| 国产一区欧美午夜福利| 五月婷婷欧美中文字幕| 久久婷婷综合色拍亚洲| 在线播放欧美精品一区| 精品欧美日韩一区二区三区| 国产三级不卡在线观看视频| 亚洲精品成人福利在线| 日本黄色录像韩国黄色录像| 东京干男人都知道的天堂| 国产精品免费无遮挡不卡视频| 大香蕉久草网一区二区三区| 日韩中文高清在线专区| 午夜国产成人福利视频| 亚洲欧美日韩在线中文字幕| 成年人视频日本大香蕉久久| 欧美一区日韩二区亚洲三区| 欧美一区二区三区视频区| 东京热男人的天堂一二三区| 亚洲最新的黄色录像在线| 成人精品视频一区二区在线观看| 午夜视频成人在线免费| 国产一区二区在线免费| 激情中文字幕在线观看| 暴力三级a特黄在线观看| 国产午夜福利片在线观看| 日本高清加勒比免费在线| 日本在线 一区 二区| 麻豆精品在线一区二区三区| 好吊日视频这里都是精品| 日本午夜精品视频在线观看| 国内尹人香蕉综合在线| 国产精品推荐在线一区| 少妇特黄av一区二区三区| 六月丁香六月综合缴情| 国产中文字幕一二三区| 欧美加勒比一区二区三区| 狠狠亚洲丁香综合久久| 精品午夜福利无人区乱码| 五月天婷亚洲天婷综合网| 男人的天堂的视频东京热|