рд▓реЙрдиреНрдЪ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдкреНрд░рджрд░реНрд╢рди рдФрд░ -500 рдорд┐рд▓реАрд╕реЗрдХрдВрдб - рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕

рдирд┐рдпрдВрддреНрд░рдг рд░реЗрдЦрд╛


рдЪрд▓реЛ рдХреЛрд░реЛрдирд╡рд╛рдпрд░рд╕ рд╕реЗ рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рддрдХрдиреАрдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдардВрдб рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЖрдпрд╛ред рдХреМрди рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ - рдХреГрдкрдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рддреЗрдЬрд╝ рд╡реЗрдм рдХреЗ рд╡рд┐рд╖рдп рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХреАрдордд / рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд╣реЛрдЧрд╛ред


рдкрд╣рд▓рд╛, рдереЛрдбрд╝рд╛ рд╕рдВрджрд░реНрднред рдЖрдорддреМрд░ рдкрд░ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдмреИрдВрдХрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдЖрдо рдЬрдирддрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЪрдорддреНрдХрд╛рд░ рд╣реБрдЖ рдФрд░ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ (рдЖрдЗрдП, рдХрд╣рддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ)ред рдмреБрдирд┐рдпрд╛рджреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ рдореЛрдмрд╛рдЗрд▓-рдкреНрд░рдердо, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ IE рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 11)ред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ - рдПрдХ рдмрд╛рд░ рдХрд╛ рдРрдк (рдпрд╛рдиреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рд▓ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИред рдпрд╣ рдЗрд╕ рд╣рдж рддрдХ рдмреЗрдХрд╛рд░ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдкрд╛рдж рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕ рд░рдВрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИред


, . . Angular, , react, " ", " " . , , , " " Vue. , legacy .


. тАФ react-router-dom, тАФ mobx. тАФ SCSS ( ) + css.modules . . , . "-" PureComponent React.memo, bundlesize + source-map-explorer. , .


, *. - mobile-first, client-facing, . . тАФ . . . , , - UI . , , , + . Server Side Rendering. , , , .NET, . тАФ .


* , ?


0,


- , , . , ( тАФ 1000ms) Performance Audit devtools (online 4x CPU slowdown). :


  • Firts Paint (FP): 618ms
  • First Meaningful Paint (FMP): 2090ms

FP , (), FMP , UI ( ) - . , , 1000 ms (+) . , , . . тАФ 4g* fast 3g **.


EventWIFI4GFast 3G
First Paint618ms815ms2389ms
First Contentful Paint2090ms2270ms3811ms

, 4g тАФ 2270ms . , , , .


* 4g preset- - . тАФ : download 4000kb/s, upload 3000kb/s, latency 20ms:
** *** , .
*** -, 3 , 10. , тАФ , .


1, React.lazy


, . :


Index.html, React, . js тАФ . , . , , . , .


, *, . тАФ React.lazy, , . , lazy , , . .


:


EventWIFI4GFast 3G
FP658ms (+6%)791ms (-3%)2258ms (-5%)
FMP2135ms (+2%)2286ms ( )3725ms (-3%)

( ). , , , . ? shared , App.tsx. . , .


* , .


2, Core LazyComponent


, shared module . shared core , , тАФ , , - .


, , , React.Lazy. "" , . , . , . : , . :


export const LazyComponent = <T extends {}>(importStatement: () => Promise<{ default: ComponentType<T> }>) => {
    const component = React.lazy(importStatement);
    return { component, load: importStatement };
};

:


EventWIFI4GFast 3G
FP487ms (-21%)570ms (-30%)1829ms (-23%)
FMP1965ms (-6%)2048ms (-10%)3468ms (-9%)

, , , 400ms fast3g - . . .


3, Spinner


, , . , ? "" ! , index.html , . index.html "" ? , . css, .


EventWIFI4GFast 3G
FP212ms (-56%)226ms (-60%)845ms (-53%)
FMP2150ms (+9%)2387ms (+17%)4593ms (+32%)

? , FP . FMP? :


// AppComponent.load();

. , .


EventWIFI4GFast 3G
FP208 (-57%)221 (-61%)782 (-57%)
FMP2002 (-2%)2065 ( )3487 ( )

, fast3g. , , , , - .


4,


. тАж ! , . / index.html . . . Fetch IE ( ), promise . . .


index.html :


(function(){const path = `${window.app.api}`; window.app.data = fetch(path); }());

. , promis- , , . тАФ . , index.html .


:


EventWIFI4GFast 3G
FP245ms (+17%)219ms ( )786ms ( )
FMP1740ms (-13%)1735ms (-16%)3441ms (-1%)

. 300ms . , . , . , .


, API , . preconnect, API. Preconnect IE 11


.


5,


, ? , , . . , ?


LazyComponent ( , ), suspense, . :


EventWIFI4GFast 3G
FP262ms (+7%)387ms (+76%)1630ms (+107%)
FMP1729ms ( )1826ms (+5%)3280ms (-4%)

FP ( ). FMP . ? тАФ - , , . , JS , index.html . :


рд╕реАрдПрд╕рдПрд╕-рд╡рд┐рд▓рдВрдм


.


, css. - , , CSS . JS ( ). ? тАФ . , CSS JS . , css , JS ( , ), CSS , JS .


6,


. тАФ .


, , , . тАж , . ! , font-weight 100 .


, , :


  • . . . - .
  • ( 5-6 , HTTP v 1.x)
  • . , .
  • , , .

( , , JS).


. , . . , font-swap ( , ). , LightHouse .


. link/preload:


<link rel="preload" href="best_font_ever.otf" as="font" type="font/otf" crossorigin="anonymus">


EventWIFI4GFast 3G
FP136ms (-44%)201ms (-8%)666ms (-15%)
FMP1519ms (-12%)1418ms (-18%)3743ms (+8%)

, fast3g (, ). , . , . , UI - .


, :


EventWIFI4GFast 3G
FP-480ms-614ms-1700ms
FMP-570ms-852ms-68ms

500-850ms . , "" .


7,


defer (- page speed LightHouse ), , , .


, (0.5 1 - index.html) ( 480ms 1700ms), 500-800ms . , .


():



, .


, :


  1. ( )
  2. Brotli, gzip.
  3. HTTP2.0.

Jeff Cooper .


. ? . . // ( , ). - Google latency 100-400ms, 0.2%-0.6% ( ). CloudFlare , 2.4ms 3.3ms 0.4%, . . , , .


!


All Articles