小程式載入快慢的問題

来源:https://www.cnblogs.com/yangan/archive/2019/09/19/11550404.html
-Advertisement-
Play Games

關於小程式的載入快慢這可是一大學問,自古以來性能都是重點,所以下麵我淺談一下自己遇到的問題和解決方法吧 首先,先從網路請求network說起: 這裡基本不關前端的事情,但是這也是優化小程式的一大重點,後端響應我們請求數據的速度影響了整個頁面的速度,所以,把它拿到第一位 請求超過300ms就已經算是慢 ...


關於小程式的載入快慢這可是一大學問,自古以來性能都是重點,所以下麵我淺談一下自己遇到的問題和解決方法吧

 

首先,先從網路請求network說起

這裡基本不關前端的事情,但是這也是優化小程式的一大重點,後端響應我們請求數據的速度影響了整個頁面的速度,所以,把它拿到第一位

 

 

 請求超過300ms就已經算是慢了,所以會影響總體速度。

建議:叫後端優化介面,加快響應速度。

還有,儘量減少無謂的請求,,將數據合併到一個介面上,這樣可以方便操作,又可以節約資源,(前提不被後端責罵)

第二:圖片

圖片的話,對越用戶上傳的圖片的大小驗證一下,大於500K的拒絕就好了,儘量經過壓縮在上傳伺服器,如果文中含有大量的圖片的,儘量使用base64,轉換一下,可以減少點資源,

多圖片的情況況下,最好做一個懶載入技術。。。把一些體積較大的圖片資源改為使用線上資源。具體做法是將素材先上傳到 cdn,然後在小程式中直接使用線上圖片地址。

不懂得如何壓縮大小的可以看看這個https://blog.csdn.net/Young_Gao/article/details/88183442現成的

第三:控制小程式包 的大小 減小資源包體積

精簡第三方依賴  儘量少用第三方包,第三方的方有的會引用比較大的模塊,儘量節約吧,減少不必要的代碼...包括一些註釋掉的,它好像也會打包進去,所以最好就刪除吧,

第四:關於調用第三方介面的問題

調用了第三方的介面速度會很慢——例如調用了騰訊的獲取定位,有時候需要1秒才能響應,如果公司內部有自己的介面和演算法,還是調用自己的吧,哪怕是騰訊的api有時候他響應的速度也會超過300ms,儘量少用

第五:關於setData

5.1. 頻繁的去 setData

在我們分析過的一些案例里,部分小程式會非常頻繁(毫秒級)的去setData,其導致了兩個後果:

  • Android 下用戶在滑動時會感覺到卡頓,操作反饋延遲嚴重,因為 JS 線程一直在編譯執行渲染,未能及時將用戶操作事件傳遞到邏輯層,邏輯層亦無法及時將操作處理結果及時傳遞到視圖層;
  • 渲染有出現延時,由於 WebView 的 JS 線程一直處於忙碌狀態,邏輯層到頁面層的通信耗時上升,視圖層收到的數據消息時距離發出時間已經過去了幾百毫秒,渲染的結果並不實時;

5.2. 每次 setData 都傳遞大量新數據

setData的底層實現可知,我們的數據傳輸實際是一次 evaluateJavascript 腳本過程,當數據量過大時會增加腳本的編譯執行時間,占用 WebView JS 線程,

5.3. 後臺態頁面進行 setData

當頁面進入後臺態(用戶不可見),不應該繼續去進行setData,後臺態頁面的渲染用戶是無法感受的,另外後臺態頁面去setData也會搶占前臺頁面的執行。

第六:變數

每個頁面都有生命周期的銷毀階段,在這階段裡面講存在data裡面的變數全部釋放(不會返回這頁面的時候可以這樣做),你二次進入的時候會比上次快上一點,但是不會很明顯,如果變數特別龐大的時候,這個時候就會顯得特別明顯,我做的都是二三十個變數。。。這個可以忽略

第七:緩存

相信每個頁面多多少少都會有復用的東西,如果有復用的變數,直接存到本地裡面,然後等小程式整個關閉之後去本地儲存刪掉,

如果首頁載入的東西很多的,可以把整個頁面緩存下來,然後,再次進這頁面的時候渲染緩存的,等介面數據都請求到了,在進行靜默渲染,

 

希望我講的額能幫到大家,感謝你的觀看

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一 庫操作 1、創建資料庫 1.1 語法 CREATE DATABASE 資料庫名 charset utf8; 1.2 資料庫命名規則 可以由字母、數字、下劃線、@、#、$ 區分大小寫 唯一性 不能使用關鍵字如 create select 不能單獨使用數字 最長128位 基本上跟python或者js ...
  • https://www.jb51.net/article/52269.htm註:本文譯自《Oracle Data Guard 11g Handbook》 Page 78 – Page 88這篇文章主要介紹了Oracle 11g Dataguard參數詳解,包含了獨立參數、主庫參數、備庫參數的詳細說明 ...
  • 一、 Redis 介紹 Remote Dictionary Server(Redis)是一個開源的使用 ANSI C 語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value 資料庫,並提供多種語言的 API。它通常被稱為數據結構伺服器,因為值(value)可以是 字元串(String) ...
  • [toc] 發表日期:2019年9月19日 上節回顧 在學習新的內容之前,先回顧一下上節的內容,上節主要講述了以下的內容: 1. ElasticSearch是什麼?什麼是搜索引擎?為什麼選擇ElasticSearch? 2. 搜索是怎麼做到的:分詞、倒排索引? 3. 環境的搭建 4. 如何通過kib ...
  • Linux下如何設置每天自動備份資料庫 本文以Centos7.6系統與Oracle11g為例: 一.先找到資料庫的環境變數 如果是在root賬戶下,須先登錄到資料庫所在賬戶 export PATHexport ORACLE_BASE=/home/nnc_db/appexport ORACLE_HOM ...
  • 首先在命令提示符下進入mysqldump.exe所在目錄(如果mysqldump.exe所在目錄已添加到系統path環境變數,可以省略此步驟) 備份mysqldump.exe --opt --add-drop-database --add-drop-table -hlocalhost -uroot ...
  • SELECT INTO 語句可用於創建表的備份復件。 SELECT INTO 語句 SELECT INTO 語句從一個表中選取數據,然後把數據插入另一個表中。 SELECT INTO 語句常用於創建表的備份復件或者用於對記錄進行存檔。 SQL SELECT INTO 語法 您可以把所有的列插入新表: ...
  • 本文鏈接: "Android mmap 文件映射到記憶體介紹" Android開發中,我們可能需要記錄一些文件。例如記錄log文件。如果使用流來寫文件,頻繁操作文件io可能會引起性能問題。 為了降低寫文件的頻率,我們可能會採用緩存一定數量的log,再一次性把它們寫到文件中。如果app異常退出,我們有可 ...
一周排行
    -Advertisement-
    Play Games
  • JWT(JSON Web Token)是一種用於在網路應用之間傳遞信息的開放標準(RFC 7519)。它使用 JSON 對象在安全可靠的方式下傳遞信息,通常用於身份驗證和信息交換。 在Web API中,JWT通常用於對用戶進行身份驗證和授權。當用戶登錄成功後,伺服器會生成一個Token並返回給客戶端 ...
  • 老周在幾個世紀前曾寫過樹莓派相關的 iOT 水文,之所以沒寫 Nano Framework 相關的內容,是因為那時候這貨還不成熟,可玩性不高。不過,這貨現在已經相對完善,老周都把它用在項目上了——第一個是自製的智能插座,這個某寶上50多塊可以買到,搜“esp32 插座”就能找到。一種是 86 型盒子 ...
  • 引言 上一篇我們創建了一個Sample.Api項目和Sample.Repository,並且帶大家熟悉了一下Moq的概念,這一章我們來實戰一下在xUnit項目使用依賴註入。 Xunit.DependencyInjection Xunit.DependencyInjection 是一個用於 xUnit ...
  • 在 Avalonia 中,樣式是定義控制項外觀的一種方式,而控制項主題則是一組樣式和資源,用於定義應用程式的整體外觀和感覺。本文將深入探討這些概念,並提供示例代碼以幫助您更好地理解它們。 樣式是什麼? 樣式是一組屬性,用於定義控制項的外觀。它們可以包括背景色、邊框、字體樣式等。在 Avalonia 中,樣 ...
  • 在處理大型Excel工作簿時,有時候我們需要在工作表中凍結窗格,這樣可以在滾動查看數據的同時保持某些行或列固定不動。凍結窗格可以幫助我們更容易地導航和理解複雜的數據集。相反,當你不需要凍結窗格時,你可能需要解凍它們以獲得完整的視野。 下麵將介紹如何使用免費.NET庫通過C#實現凍結Excel視窗以鎖 ...
  • .NET 部署 IIS 的簡單步驟一: 下載 dotnet-hosting-x.y.z-win.exe ,下載地址:.NET Downloads (Linux, macOS, and Windows) (microsoft.com) .NET 部署 IIS 的簡單步驟二: 選擇對應的版本,點擊進入詳 ...
  • 拓展閱讀 資料庫設計工具-08-概覽 資料庫設計工具-08-powerdesigner 資料庫設計工具-09-mysql workbench 資料庫設計工具-10-dbdesign 資料庫設計工具-11-dbeaver 資料庫設計工具-12-pgmodeler 資料庫設計工具-13-erdplus ...
  • 初識STL STL,(Standard Template Library),即"標準模板庫",由惠普實驗室開發,STL中提供了非常多對信息學奧賽很有用的東西。 vector vetor是STL中的一個容器,可以看作一個不定長的數組,其基本形式為: vector<數據類型> 名字; 如: vector ...
  • 前言 最近自己做了個 Falsk 小項目,在部署上伺服器的時候,發現雖然不乏相關教程,但大多都是將自己項目代碼複製出來,不講核心邏輯,不太簡潔,於是將自己部署的經驗寫成內容分享出來。 uWSGI 簡介 uWSGI: 一種實現了多種協議(包括 uwsgi、http)並能提供伺服器搭建功能的 Pytho ...
  • 1 文本Embedding 將整個文本轉化為實數向量的技術。 Embedding優點是可將離散的詞語或句子轉化為連續的向量,就可用數學方法來處理詞語或句子,捕捉到文本的語義信息,文本和文本的關係信息。 ◉ 優質的Embedding通常會讓語義相似的文本在空間中彼此接近 ◉ 優質的Embedding相 ...