成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

被Diss性能差,Dan連夜優(yōu)化React新文檔

開發(fā) 前端
Dan表示:當(dāng)前文檔還處于Beta版本,現(xiàn)在有更重要的工作要完成,正式版上線前會優(yōu)化性能。本篇文章我們來看看,Dan都做了哪些優(yōu)化。

大家好,我卡頌。

昨天在開源圈發(fā)生個小插曲。起因是有個用戶表示:React新文檔在文檔結(jié)構(gòu)、美觀度、性能等各方面都達(dá)到很高的標(biāo)準(zhǔn)。

尤雨溪對Vue新文檔與React Beta文檔做了測試后表示:在性能這塊,Vue新文檔更具優(yōu)勢。

左Vue,右React

Dan表示:當(dāng)前文檔還處于Beta版本,現(xiàn)在有更重要的工作要完成,正式版上線前會優(yōu)化性能。

話雖這么說,Dan應(yīng)該是通了個宵優(yōu)化了一把性能:

本篇文章我們來看看,Dan都做了哪些優(yōu)化。

優(yōu)化效果

經(jīng)過優(yōu)化后的lightHouse跑分:

作為對照,Vue文檔的跑分:

兩者10次TTI跑分對比:

這里的TTI[1](Time to Interactive,即可交互時間),衡量的是「頁面變得完全可交互所需時間」,其中「完全可交互」指:

  • 頁面展示了「有用信息」(由FCP衡量,F(xiàn)CP指First Contentful Paint)。
  • 可見頁面中大部分元素完成事件綁定,交互響應(yīng)的延遲在50ms內(nèi)。

優(yōu)化措施

優(yōu)化主要有兩個思路:

  • 編譯時:減少打包體積。
  • 運行時:「非首屏必需」代碼延遲加載。

編譯時優(yōu)化

之前入口處全量引入了一個工具函數(shù)utils,現(xiàn)在將其中方法拆分成不同文件,這樣能減少首屏bundle體積:

再比如:

這部分優(yōu)化讓bundle體積減少約一半:

其次,當(dāng)前Next.js(文檔使用的框架)沒有默認(rèn)開啟「針對現(xiàn)代瀏覽器編譯」。這意味著bundle中會引入更多polyfill,有更多語法轉(zhuǎn)換及幫助函數(shù)。

Dan通過配置開啟了這個功能:

運行時優(yōu)化

運行時優(yōu)化的方式主要是:懶加載非必需資源。

新文檔中存在很多codesandbox(在線示例),這些示例依賴CodeMirror linter,但這不是首屏必需的。

所以Dan將這部分資源懶加載:

除此之外,如果你細(xì)心觀察會發(fā)現(xiàn),Total Blocking Time指標(biāo)下降很多:

左之前,右之后

TBT[2](Total Blocking Time,即總阻塞時間)測量頁面「被阻止響應(yīng)用戶輸入(例如鼠標(biāo)點擊、屏幕點擊或按下鍵盤)的總時間」。

一般來說,如果JS執(zhí)行時間過長,就會影響這個指標(biāo)。

我們知道,頁面加載后前端框架會有首屏渲染的初始化過程。即使是服務(wù)端渲染,也會有Hydrate(注水)的過程。

而React18的Selective Hydration為解決這一問題提供了好方法。

如果你的React18應(yīng)用是SSR,那么被包裹的組件部分不會參與首次Hydrate的過程。

也就是說,被包裹的部分不會影響阻塞時間。

所以,雖然這部分工作很重要,但Dan需要做的,僅僅是把一些「對首屏顯示不太重要的組件」包裹在中。

可以看到,在將一些組件用包裹前Hydrate作為一個長任務(wù)的耗時:

當(dāng)包裹之后,這個長任務(wù)持續(xù)時間顯著降低,進(jìn)而降低TBT:

總結(jié)

這些只是初步的優(yōu)化結(jié)果,后續(xù)還有很多優(yōu)化工作值得去做。比如INP[3](Interaction to Next Paint,與下一次Paint的交互)指標(biāo)還是偏高:

Dan坦言:指標(biāo)偏高的原因可能是因為 —— React本身比較慢。

他對此提出了一些猜想,你可以到這里參與討論[4]。

參考資料

[1]TTI:https://web.dev/tti/。

[2]TBT:https://web.dev/tbt/。

[3]INP:https://web.dev/inp/。

[4]參與討論:https://github.com/reactjs/reactjs.org/issues/4691。

責(zé)任編輯:姜華 來源: 魔術(shù)師卡頌
相關(guān)推薦

2021-10-22 15:45:32

開發(fā)技能React

2022-06-05 21:27:40

Reacteffect

2022-06-15 22:33:07

React逃生艙

2021-08-27 14:26:06

開發(fā)技能React

2019-02-25 07:07:38

技巧React 優(yōu)化

2022-08-03 09:11:31

React性能優(yōu)化

2016-12-19 10:00:00

React性能優(yōu)化

2023-11-01 17:57:56

React應(yīng)用程序性能

2020-06-22 07:30:00

React開發(fā)工具

2020-04-07 08:00:02

Redis緩存數(shù)據(jù)

2021-01-18 11:27:03

Istio架構(gòu)云環(huán)境

2023-07-22 00:33:07

React團(tuán)隊數(shù)據(jù)

2019-03-14 15:38:19

ReactJavascript前端

2023-03-20 07:12:54

GPT學(xué)習(xí)React

2023-11-07 11:24:18

2020-12-20 10:02:17

ContextReactrender

2022-09-05 11:28:07

數(shù)據(jù)分析活動分析

2021-11-05 10:36:19

性能優(yōu)化實踐

2022-03-11 10:23:02

React性能優(yōu)化

2021-06-17 08:59:45

React前端優(yōu)化
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 天天射夜夜操 | 精品久久久一区 | 99精品欧美一区二区三区综合在线 | 国产一二三区免费视频 | 天天插天天狠天天透 | 99精品一区二区 | 999久久精品| 日本精品视频一区二区三区四区 | 国产激情视频在线观看 | 欧美日韩视频 | 亚洲区中文字幕 | 日一日操一操 | 国产一级特黄视频 | 在线播放精品视频 | a级大片 | 91n成人| 一区二区三区在线 | 男人阁久久 | 国产精品视频区 | 国产综合av | 久久精品国产久精国产 | 亚洲综合在线网 | 国产一区二区三区免费 | 日韩精品在线看 | 国产成人高清视频 | 一区二区免费高清视频 | 亚洲日韩中文字幕一区 | 日本精品久久久久久久 | 韩国电影久久 | 国产精品久久久久久52avav | 二区三区在线观看 | 91精品麻豆日日躁夜夜躁 | 波多野结衣先锋影音 | 一区二区三区视频在线 | 国产高清精品一区 | 日日摸夜夜添夜夜添精品视频 | 九九九视频在线 | 一本色道精品久久一区二区三区 | 一区在线视频 | 青青草精品| 国产高清一区二区三区 |