vue性能優(yōu)化

vue首屏優(yōu)化--問題

首屏的加載速度慢:加載過程類似于同步的操作,比較耗時
首頁白屏:加載過程耗時,直到數(shù)據(jù)渲染白屏才結(jié)束
FP (First Paint) 首次繪制
FCP (First Contentful Paint) 首次內(nèi)容繪制
LCP (Largest Contentful Paint) 最大內(nèi)容渲染
DCL (DomContentloaded)
FMP(First Meaningful Paint) 首次有效繪制
L (onLoad)
TTI (Time to Interactive) 可交互時間
TBT (Total Blocking Time) 頁面阻塞總時長
FID (First Input Delay) 首次輸入延遲
CLS (Cumulative Layout Shift) 累積布局偏移
SI (Speed Index)

SPA(單頁應用)--加載過程

1.加載html ---FP(僅有一個div根節(jié)點)
<div id="app"></div> --這個過程加載骨架屏
2.加載靜態(tài)資源,css,js(不包含圖片)
3.解析js,生成html
<div id="app">(這個時候可能就是有一個背景色或者大的輪廓)--FCP(包含頁面的基本框架,但是沒有數(shù)據(jù)內(nèi)容)
<div class="head"></div>
<div class="body"></div>
</div>
4.ajax請求 0.5s (從此往前一直就是白屏)
5.數(shù)據(jù)渲染 ---FMP(包含頁面所有元素和數(shù)據(jù),圖片和視頻可能還沒有加載)
<div id="app">(這個時候可能就是有一個背景色或者大的輪廓)
<div class="head">很好</div>
<div class="body">哈哈哈</div>
</div>
****路由跳轉(zhuǎn)的時候,觸發(fā)的是ajax請求,一般不會出現(xiàn)白屏的狀態(tài),需要的資源已加載

vue首屏優(yōu)化--解決

1.loading
2.骨架屏:頁面數(shù)據(jù)尚未加載前先給用戶展示出頁面的大致結(jié)構(gòu),直到請求數(shù)據(jù)返回后再渲染頁面,補充進需要顯示的數(shù)據(jù)內(nèi)容(就是一個簡單的html和css)
3.路由動態(tài)加載(動態(tài)組件):不能將所有的js全部引入main.js,否則加載js的過程耗時(第二步),使用動態(tài)加載。
在babel中配置plugin-syntax-dynamic-import ==> 路由動態(tài)加載
component: () => import('@/components/children/Test1') ==>路由懶加載

4.抽取公共庫:多次使用的組件,加載一次,下次使用緩存,不要多次加載
webpack4,一個新的配置optimization.splitChunks --- 分割代碼,抽出公用代碼

5.ssr,預渲染,同構(gòu)
ssr:服務端渲染,-->請求--->node(執(zhí)行vue項目)--->html-->返回給客戶端
同構(gòu)渲染:一套代碼多端使預渲染:webpack打包的時候 vue打包出來的項目--->無頭瀏覽器--->獲取到預渲染的頁面的html--->插入index.html(此時首頁已經(jīng)形成)--->放在CDN(預渲染將首屏出現(xiàn)提前到第一步FP階段)
安裝預渲染的插件:npm install prerender-spa-plugin -D
6.單頁變成多頁
webpack entry多個入口
7.資源請求時間片的處理
8.cdn
9.quickLink(谷歌的)---(npm文檔中) --->在瀏覽器空閑的時候,去解析預加載我可能要跳轉(zhuǎn)的頁面,而不是觸發(fā)的去解析加載。有a標簽的時候或者滾動之后出現(xiàn)a的時候就去解析預加載

a..proload
瀏覽器預加載:只是加載html中聲明的資源,比如 <link href="a.css">
<link rel="preload">-->加載的內(nèi)容看配置了什么,配置決定資源加載的優(yōu)先級
b..prefetch --->
link -- prefetch
<link rel="prefetch" href="/pic.png">
dns--prefetch (UDP協(xié)議)
<link rel="dns-prefetch" href="/pic.png">
prerender--prefetch
<link rel="prerender" href="ww.baidu.com">
c..preconnect
DNS TLS協(xié)商 TCP握手

11.webwork
12.pwa
13.http chunk
rollup

vuecli自己搭建

看資料看mdn

udp和tcp協(xié)議的區(qū)別

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 定位應用的性能問題 Vue應用的性能問題可以分為兩個部分:運行時性能問題,加載性能問題。和其他 web應用一樣,定...
    hellomyshadow閱讀 2,329評論 1 15
  • 原文作者:vue中文社區(qū) 公眾號 / 我是你的超級英雄 前言 Vue 框架通過數(shù)據(jù)雙向綁定和虛擬 DOM 技術,幫...
    白茶_別事閱讀 327評論 0 0
  • 回答此問題應從三個方面著手 1)Vue 代碼層面的優(yōu)化; 2)webpack 配置層面的優(yōu)化; 3)基礎的 Web...
    moveOn_3e90閱讀 102評論 0 0
  • 前端路漫漫,優(yōu)化無極限。本文主要從代碼層面對vue項目性能優(yōu)化進行總結(jié), 1.v-if 和 v-show 區(qū)分場景...
    LazyCat404閱讀 1,618評論 0 2
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,896評論 28 54

友情鏈接更多精彩內(nèi)容