專案效能最佳化方案

ladybug7發表於2024-06-13

前端效能最佳化的指標

  • 首屏速度,白屏時間等
  • 操作速度以及渲染速度等

首屏速度
白屏時間 渲染頁面
資源載入 首屏 js 執行 首屏資料請求 Dom 渲染

首屏速度可以做的操作

# 收效很大的操作

1.減少首屏資源體積(打包工具的壓縮,非同步載入,更新為體積更小的新版本,編寫程式碼儘量減少體積,去除大的 base64 體積)最大效果

  • 體積大又不需要馬上用的功能適合非同步載入(比如圖片壓縮功能)。
  • 新版本的第三方庫基本支援 tree-haking(很多時候只用到第三方庫的一部分功能)。
  • 能不用第三方庫的情形,就儘量自己寫,因為第三方庫通常比自己寫的大。
  • 圖片轉為 base64 時會進入 js 程式碼,增加了程式碼量,避免將大圖片轉為 base64。

# 收效不大或者特殊情況的最佳化操作

  1. 首屏資料儘量並行,如果可行讓小資料介面合併到其他介面。
  2. 頁面包含大量 Dom 可以分批,隨滾動渲染。
  3. 骨架屏,loading,先讓螢幕不白,減少使用者焦慮。

操作速度和渲染速度

# 什麼情況下會造成操作卡頓和渲染慢?

  1. 一次性操作大量 Dom。(解決方案:參照長列表渲染和非同步渲染)
  2. 進行了複雜度很高的運算(常見於迴圈)。
  3. vue 和 react 專案中,不必要的渲染太多。

    --如果是 react 相關技術棧,可以人工干預的效能最佳化很多。詳情可參照 react 課程。

    --vue 中有依賴收集,配合上 vue3 的靜態節點標記,已經基本上避免了因為資料改變引起的無意義渲染。常見的最佳化方式如下:

      1.頻繁切換的顯隱的內容用 v-show ,只有開啟就一次決定顯示與否的用 v-if。

      2.迴圈,動態切換內容加好 key。

      3.keep-alive 快取。

      4.區分請求粒度,減少請求範圍,也能減少更新。

資料快取

  • 不變的資料,定期時效可以快取在 cookies 或者 localstorage 中,比如 token,使用者名稱等。
  • 可以考慮做一個快取佇列,存於記憶體中(全域性物件,vuex)。這樣能保證重新整理就更新資料,也能一定程度上快取資料。

相關文章