人人妻人人爽人人澡

<output id="wi4a2"><dd id="wi4a2"><tt id="wi4a2"></tt></dd></output>

  1. <th id="wi4a2"></th>

  2. <th id="wi4a2"><video id="wi4a2"><acronym id="wi4a2"></acronym></video></th>

  3. 微信小程序setData優化指南
    作者:上海網站優化 日期:2020-01-09
    setData 是小程序開發中使用最頻繁的接口,也是最容易引發性能問題的接口。在介紹常見的錯誤用法前,先簡單介紹一下 setData 背后的工作原理。
     
    工作原理
     
    小程序的視圖層目前使用 WebView 作為渲染載體,而邏輯層是由獨立的 JavascriptCore 作為運行環境。在架構上,WebView 和 JavascriptCore 都是獨立的模塊,并不具備數據直接共享的通道。當前,視圖層和邏輯層的數據傳輸,實際上通過兩邊提供的 evaluateJavascript 所實現。即用戶傳輸的數據,需要將其轉換為字符串形式傳遞,同時把轉換后的數據內容拼接成一份 JS 腳本,再通過執行 JS 腳本的形式傳遞到兩邊獨立環境。
     
    而 evaluateJavascript 的執行會受很多方面的影響,數據到達視圖層并不是實時的。

    微信小程序setData優化指南
     
    常見的 setData 操作錯誤
     
    1. 頻繁的去 setData
     
    在我們分析過的一些案例里,部分小程序會非常頻繁(毫秒級)的去setData,其導致了兩個后果:
     
    Android 下用戶在滑動時會感覺到卡頓,操作反饋延遲嚴重,因為 JS 線程一直在編譯執行渲染,未能及時將用戶操作事件傳遞到邏輯層,邏輯層亦無法及時將操作處理結果及時傳遞到視圖層;
    渲染有出現延時,由于 WebView 的 JS 線程一直處于忙碌狀態,邏輯層到頁面層的通信耗時上升,視圖層收到的數據消息時距離發出時間已經過去了幾百毫秒,渲染的結果并不實時;
    2. 每次 setData 都傳遞大量新數據
     
    由setData的底層實現可知,我們的數據傳輸實際是一次 evaluateJavascript 腳本過程,當數據量過大時會增加腳本的編譯執行時間,占用 WebView JS 線程,
     
    3. 后臺態頁面進行 setData
     
    當頁面進入后臺態(用戶不可見),不應該繼續去進行setData,后臺態頁面的渲染用戶是無法感受的,另外后臺態頁面去setData也會搶占前臺頁面的執行。
    人人妻人人爽人人澡
    <output id="wi4a2"><dd id="wi4a2"><tt id="wi4a2"></tt></dd></output>

    1. <th id="wi4a2"></th>

    2. <th id="wi4a2"><video id="wi4a2"><acronym id="wi4a2"></acronym></video></th>