一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統 注冊

微信小程序性能優化實現流程

2018-07-18|HiShop
導讀:為什么要做性能優化? 一切性能優化都是為了體驗優化 1. 使用 小程序 時,是否會經常遇到如下問題? 打開是一直白屏 打開是loading態,轉好幾圈 我的頁面點了...

微信小程序性能優化實現流程

為什么要做性能優化?

一切性能優化都是為了體驗優化

1. 使用小程序時,是否會經常遇到如下問題?

  • 打開是一直白屏

  • 打開是loading態,轉好幾圈

  • 我的頁面點了怎么跳轉這么慢?

  • 我的列表怎么越滑越卡?

2. 我們優化的方向有哪些?

  • 啟動加載性能

  • 渲染性能

3. 啟動加載性能

1. 首次加載

你是否見過小程序首次加載時是這樣的圖?

這張圖中的三種狀態對應的都是什么呢?

小程序啟動時,微信會為小程序展示一個固定的啟動界面,界面內包含小程序的圖標、名稱和加載提示圖標。此時,微信會在背后完成幾項工作:下載小程序代碼包、加載小程序代碼包、初始化小程序首頁。下載到的小程序代碼包不是小程序的源代碼,而是編譯、壓縮、打包之后的代碼包。

2. 加載順序

小程序加載的順序是如何?

微信會在小程序啟動前為小程序準備好通用的運行環境。這個運行環境包括幾個供小程序使用的線程,并在其中完成小程序基礎庫的初始化,預先執行通用邏輯,盡可能做好小程序的啟動準備。這樣可以顯著減少小程序的啟動時間。

通過2,我們知道了,問題1中第一張圖是資源準備(代碼包下載);第二張圖是業務代碼的注入以及落地頁首次渲染;第三張圖是落地頁數據請求時的loading態(部分小程序存在)

3. 控制包大小

提升體驗最直接的方法是控制小程序包的大小,這是最顯而易見的

  • 勾選開發者工具中“上傳代碼時,壓縮代碼”選項;

  • 及時清理無用的代碼和資源文件(包括無用的日志代碼)

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

從開發者的角度看,控制代碼包大小有助于減少小程序的啟動時間。對低于1MB的代碼包,其下載時間可以控制在929ms(iOS)、1500ms(Android)內。

4. 采用分包加載機制

根據業務場景,將用戶訪問率高的頁面放在主包里,將訪問率低的頁面放入子包里,按需加載;

使用分包時需要注意代碼和資源文件目錄的劃分。啟動時需要訪問的頁面及其依賴的資源文件應放在主包中。

5 采用分包預加載技術

在4的基礎上,當用戶點擊到子包的目錄時,還是有一個代碼包下載的過程,這會感覺到明顯的卡頓,所以子包也不建議拆的太大,當然我們可以采用子包預加載技術,并不需要等到用戶點擊到子包頁面后在下載子包,而是可以根據后期數據,做子包預加載,將用戶在當先頁可能點擊的子包頁面先加載,當用戶點擊后直接跳轉;

這種基于配置的子包預加載技術,是可以根據用戶網絡類型來判斷的,當用戶處于網絡條件好時才預加載;是靈活可控的

6. 采用獨立分包技術

目前很多小程序主包+子包(2M+6M)的方式,但是在做很多運營活動時,我們會發現活動(紅包)是在子包里,但是運營、產品投放的落地頁鏈接是子包鏈接,這是的用戶在直達落地時,必須先下載主包內容(一般比較大),在下載子包內容(相對主包,較?。?,這使得在用戶停留時間比較短的小程序場景中,用戶體驗不是很好,而且浪費了很大部分流量;

 

 

可以采用獨立分包技術,區別于子包,和主包之間是無關的,在功能比較獨立的子包里,使用戶只需下載分包資源;

7. 首屏加載的優化建議

7.1 提前請求

異步請求可以在頁面onLoad就加載,不需要等頁面ready后在異步請求數據;當然,如果能在前置頁面點擊跳轉時預請求當前頁的核心異步請求,效果會更好;

7.2 利用緩存

利用storage API, 對變動頻率比較低的異步數據進行緩存,二次啟動時,先利用緩存數據進行初始化渲染,然后后臺進行異步數據的更新,這不僅優化了性能,在無網環境下,用戶也能很順暢的使用到關鍵服務;

7.3 避免白屏

可以在前置頁面將一些有用的字段帶到當前頁,進行首次渲染(列表頁的某些數據--> 詳情頁),沒有數據的模塊可以進行骨架屏的占位,使用戶不會等待的很焦慮,甚至走了;

7.4 及時反饋

及時的對需要用戶等待的交互操作進行反饋,避免用戶以為小程序卡了,無響應


渲染性能優化

1. 小程序渲染原理

雙線程下的界面渲染,小程序的邏輯層和渲染層是分開的兩個線程。在渲染層,宿主環境會把WXML轉化成對應的JS對象,在邏輯層發生數據變更的時候,我們需要通過宿主環境提供的setData方法把數據從邏輯層傳遞到渲染層,再經過對比前后差異,把差異應用在原來的Dom樹上,渲染出正確的UI界面。

分析這個流程不難得知:頁面初始化的時間大致由頁面初始數據通信時間和初始渲染時間兩部分構成。其中,數據通信的時間指數據從邏輯層開始組織數據到視圖層完全接收完畢的時間,數據量小于64KB時總時長可以控制在30ms內。傳輸時間與數據量大體上呈現正相關關系,傳輸過大的數據將使這一時間顯著增加。因而減少傳輸數據量是降低數據傳輸時間的有效方式。

2. 避免使用不當setData

在數據傳輸時,邏輯層會執行一次JSON.stringify來去除掉setData數據中不可傳輸的部分,之后將數據發送給視圖層。同時,邏輯層還會將setData所設置的數據字段與data合并,使開發者可以用this.data讀取到變更后的數據。因此,為了提升數據更新的性能,開發者在執行setData調用時,最好遵循以下原則:

2.1 不要過于頻繁調用setData,應考慮將多次setData合并成一次setData調用;

2.2 數據通信的性能與數據量正相關,因而如果有一些數據字段不在界面中展示且數據結構比較復雜或包含長字符串,則不應使用setData來設置這些數據;

2.3 與界面渲染無關的數據最好不要設置在data中,可以考慮設置在page對象的其他字段下

提升數據更新性能方式的代碼示例

Page({
  onShow: function() {

    // 不要頻繁調用setData
    this.setData({ a: 1 })
    this.setData({ b: 2 })
    // 絕大多數時候可優化為
    this.setData({ a: 1, b: 2 })

    // 不要設置不在界面渲染時使用的數據,并將界面無關的數據放在data外
    this.setData({
      myData: {
        a: '這個字符串在WXML中用到了',
        b: '這個字符串未在WXML中用到,而且它很長…………………………'
      }
    })
    // 可以優化為
    this.setData({
      'myData.a': '這個字符串在WXML中用到了'
    })
    this._myData = {
      b: '這個字符串未在WXML中用到,而且它很長…………………………'
    }

  }
})
復制代碼

2.4 切勿在后臺頁面進行setData

在一些頁面會進行一些操作,而到頁面跳轉后,代碼邏輯還在執行,此時多個webview是共享一個js進程;后臺的setData操作會搶占前臺頁面的渲染資源;

3. 用戶事件使用不當

視圖層將事件反饋給邏輯層時,同樣需要一個通信過程,通信的方向是從視圖層到邏輯層。因為這個通信過程是異步的,會產生一定的延遲,延遲時間同樣與傳輸的數據量正相關,數據量小于64KB時在30ms內。降低延遲時間的方法主要有兩個。

1.去掉不必要的事件綁定(WXML中的bind和catch),從而減少通信的數據量和次數; 2.事件綁定時需要傳輸target和currentTarget的dataset,因而不要在節點的data前綴屬性中放置過大的數據。

4. 視圖層渲染原理

4.1首次渲染

初始渲染發生在頁面剛剛創建時。初始渲染時,將初始數據套用在對應的WXML片段上生成節點樹。節點樹也就是在開發者工具WXML面板中看到的頁面樹結構,它包含頁面內所有組件節點的名稱、屬性值和事件回調函數等信息。最后根據節點樹包含的各個節點,在界面上依次創建出各個組件。

在這整個流程中,時間開銷大體上與節點樹中節點的總量成正比例關系。因而減少WXML中節點的數量可以有效降低初始渲染和重渲染的時間開銷,提升渲染性能。

簡化WXML代碼的例子

<view data-my-data="{{myData}}"> 
  <view class="my-class" data-my-data="{{myData}}" bindtap="onTap">
    <text> 
      {{myText}}
    text>
  view>
view>



<view class="my-class" data-my-data="{{myData}}" bindtap="onTap">
  {{myText}}
view>
復制代碼

4.2 重渲染

初始渲染完畢后,視圖層可以多次應用setData的數據。每次應用setData數據時,都會執行重渲染來更新界面。初始渲染中得到的data和當前節點樹會保留下來用于重渲染。每次重渲染時,將data和setData數據套用在WXML片段上,得到一個新節點樹。然后將新節點樹與當前節點樹進行比較,這樣可以得到哪些節點的哪些屬性需要更新、哪些節點需要添加或移除。最后,將setData數據合并到data中,并用新節點樹替換舊節點樹,用于下一次重渲染。

在進行當前節點樹與新節點樹的比較時,會著重比較setData數據影響到的節點屬性。因而,去掉不必要設置的數據、減少setData的數據量也有助于提升這一個步驟的性能。

5. 使用自定義組件

自定義組件的更新只在組件內部進行,不受頁面其他不能分內容的影響;比如一些運營活動的定時模塊可以單獨抽出來,做成一個定時組件,定時組件的更新并不會影響頁面上其他元素的更新;各個組件也將具有各自獨立的邏輯空間。每個組件都分別擁有自己的獨立的數據、setData調用。

6. 避免不當的使用onPageScroll

每一次事件監聽都是一次視圖到邏輯的通信過程,所以只在必要的時候監聽pageSrcoll

總結

小程序啟動加載性能

  • 控制代碼包的大小

  • 分包加載

  • 首屏體驗(預請求,利用緩存,避免白屏,及時反饋

小程序渲染性能

  • 避免不當的使用setData

  • 合理利用事件通信

  • 避免不當的使用onPageScroll

  • 優化視圖節點

  • 使用自定義組件


電話咨詢 預約演示 0元開店
主站蜘蛛池模板: 日日操夜夜撸|日本69xxxxxxxx|性欧美videos另类hd|日本一区二区三区久久久久久久久不|国产午夜福利精品一区|久久国产亚洲精品赲碰热 | 三级日韩|亚洲=aⅴ在线|成人精品玖玖资源在线播放|黄网在线免费观看|免费观看又色又爽又湿的软件|奇米四色888 | 啄木乌欧美一区二区三区高压监狱|久久综合狠狠|日本亚欧乱色视频在线观看|亚洲=av毛片久久久久|国产亚洲精品二区|波多野结衣免费观看视频 | 国产在线观看免费版|干干干综合网|久久一起草|精品无人区麻豆乱码1区2区新区|一区二区在线视频|免费大黄网站 | 国产高清精品亚洲а∨|一本久道久久综合狠狠爱亚洲精品|久久国产福利|久久久久www|无码人妻精品一区二区三区99不卡|亚V=a芒果乱码一二三四区别 | 国产人成精品香港三级在线|国产乱人伦偷精品视频免观看|男女无套免费视频软件|中文无码一区二区不卡αv|91短视频免费|亚洲美女精品区人人人人 | 家庭午夜影院|chinese老熟妇老女人hd|欧美成性色|中文字幕无码=a级毛片观看|日本在线观看中文字幕|久久国产精品偷导航 | 国产精品婷婷色综合www在线|丰满风流护士长BD=a片|国产精品福利片|农村人伦偷精品视频=a人人澡|久热免费在线视频|18禁美女黄网站色大片免费网站 | 午夜影院在线播放|色姑娘天天综合|亚洲=av国产=av综合=av|#NAME?|亚洲毛片一区二区三区|#NAME? | 国产V精品无码好舒服欧美精品|一本之道亚洲|亚在线观看免费视频入口|成人学院中文字幕|国产精品成人观看视频网站|欧洲成在人线视频免费 | 国产精品亚洲专区无码蜜芽|国产一级内谢一级一内高请|无码孕妇孕交在线观看|免费的欧美gv在线网站|精品美女=av|亚洲综合久久精品无码色欲 | l礼香的真实|99久久99九九99九九九|精品日产一区二区三区视频怎么看|18禁黄无码免费网站高潮|亚洲成=av在线|色狠狠=aV老熟女 | 在线看无码的免费网站|一本久道久久综合婷婷鲸鱼|九九爱在线视频观看免费视频|少妇久久久久久久久久|91视频免费网址|青青草自拍偷拍 | АⅤ天堂中文在线网|人人澡人人澡人人看欧美|高H喷水荡肉爽文NP肉色学校|日韩一二三区不卡在线视频|欧美在线观看www|中文字幕一区二区三区5566 | 琪琪亚洲|成品片=a免费直接观看|久久精品性视频|少妇无码吹潮|国产女人十八毛片|免费毛儿一区二区十八岁 | 国产精品大全|韩国精品视频一区二区在线播放|啦啦啦www日本高清免费观看|大柠檬导航香蕉导航巨人导航|中国黄色一级|国产成人一卡2卡3卡4卡 | 成人一区在线视频|成人一区二区在线播放|新婚少妇毛茸茸的性|永久免费黄色大片|欧美精品一区在线观看|国产情侣久久久久=aⅤ免费 | 日韩国产成人精品视频人|中国老太毛茸茸xxxxhd|性感美女一级片|男同性恋在线观看|免费视频亚洲|91c=aoporn视频 | 国内精品久久国产|国产一区二区三区内射高清|一二三四视频在线社区中文字幕2|大地资源在线观看中文免费|午夜精品免费观看|无码成人18禁动漫网站 | 成人在线视频亚洲|免费无码又爽又刺激毛片|#NAME?|92看片淫黄大片欧美看国产片|天天模夜夜肏狠狠的操|东日韩二三区 在线观看国产免费|亚洲免费成人在线视频|日韩免费一级毛片|国产综合久久|爱情岛论坛亚洲品质自拍hd|欧美成人免费一区二区 | 好吊妞在线新免费视频|精品一区二区在线播放|久久=av片免费一区二区三区|无码少妇一区二区|中文=av字幕一区|国产精品久久国产精品99盘 | 日本黄色一区|人成免费网站|中文字幕第八页|亚洲欧美变态另类综合|日日草天天干|亚洲福利中文字幕在线网址 | 欧美一区三区在线观看|中国黄色一及片|国产特黄色片|国产精华液一线二线三线|内射合集对白在线|日本免费无码XXXXX视频 | 女人一区|午夜成人毛片免费观看蜜桔视频|高清无码不用播放器=av|91性网|无码一区二区|一区二区三区三州在线观看视频 | 亚洲另类欧美综合久久|天天澡夜夜澡人人澡|最近免费中文字幕完整视频|精品bbwbbwbbwbbwbbwbbw|色婷婷五月另类综合视频在线|黄石第五季第9集回归 | 青青手机在线视频|18男女无套免费视频|国产亚洲1区2区3区|日韩欧美在线综合网|疯狂的欧美乱大交|www四虎 | 久久伊人精品|91精品色|精产国品一区二区三区四区|日韩影视在线|国产男女猛烈无遮挡免费视频网站|成品片=a免免费人看 | 国产一区二区三区精品久久久|欧美午夜一区二区|久草新免费|91=av成人|男人午夜在线|亚洲欧美国产vr在线观 | 完美世界免费观看完整在线观看|日韩黄色一级大片|粉嫩=aV久久一区二区三区王玥|三级全黄的视频在线观看|91亚洲精品丁香在线观看|色香蕉视频 | 日韩=a网|超碰=av在线|国产综合久|三级视频在线|久久精品毛片免费观看|护士精品一区二区三区99 | 少妇放荡白洁干柴烈火40视频|一级=a=a=a=a毛片|国产黄色大全|#NAME?|亚洲成在人线综合导航|国产精品黄在线观看 | www.久草.com|日本不卡高清|丁香花免费完整高清观看|国产一级爽快片在线观看|亚洲多毛女人厕所小便|成人在线视频观看 | 亚洲欧美又粗又长久久久|精品一区二区久久久|亚州精品在线视频|日韩国产成人精品|91=av导航|国产亚州精品视频 | 少妇天天干|一本久道久久综合中文字幕|色哟哟国产成人精品免费|国产主播户外勾搭人xx|精品无人区无码乱码毛片国产|亚洲欧美中日精品高清一区二区 | 欧美=a黄|黄色一级片毛片|无码国产乱人伦偷精品视频|黄网免费视频|国产精品乱码久久久久久|性少妇tubevⅰdeos高清 | 99久久成人精品国产网站|九九在线|亚洲播播|快射视频在线观看|日本毛片在线|国产高清无码视频在线观看 国产精品二区影院|久久99热精品|一级黄片毛片免费|sihu在线|亚洲精品女|99vv1com这只有精品 | 欧美G=aY男生露J自慰网站|亚洲国产一区二区三区日本久久久|成人久久|美女一级片视频|juli=a=ann无码丰满熟妇|亚洲特级黄色片 | 欧美日本国产在线观看|日本一区二区三区国色天香|校园春色~综合网|欧美一级色|91精品在线观|日韩欧美高清一区二区 | 99ri=av国产精品视频|国产视频9999|中文字幕乱码在线|无码专区精品推荐第一页|免费超爽大片黄|一级小毛片 | 91美女视频|c=aoporm在线|狠狠色噜噜狠狠米奇777|欧美一级做一级爱=a做片性|亚洲=aV噜噜狠狠网址蜜桃|亚洲v=a一区二区 | 业余自由性别成熟偷窥|国产夫妻原创自拍|91精品区|青青青爽视频在线观看|黄片毛片在线|朋友的姐姐2在线观看 |