μ¬μ©μμκ² λΉ λ₯Έ λ‘λ©κ³Ό μνν μνΈμμ©μ μ 곡νκΈ° μν MDN κ°μ΄λλ₯Ό μ½μΌλ©΄μ μμ±ν κΈμ λλ€.
https://developer.mozilla.org/ko/docs/Web/Performance/Guides/How_browsers_work(μλ¬Έ)π Populating the page: how browsers work
https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/How_browsers_work#paint
π‘ κ°μ μμ΄λμ΄
- μνΈμμ© λ³΄μ₯: ν° μμ²μ λλ μ, νμ 리μμ€λ₯Ό λ¨Όμ ν¨μΉνκ³ λλ¨Έμ§λ λ‘λ© UIμ ν¨κ» 보μ¬μ€ μ μλ€.
- λ©μΈ μ€λ λμ μ± μ μ€μ΄κΈ°: λλλ§μ΄ μ§μ°λλ νμμ΄ λ°μνλ€λ©΄? λΈλΌμ°μ κ° μ±κΈ μ°λ λμΈ μ μ μκ°νμ¬ νλ‘νμΌλ¬μμ μ μ νκ³ μλ νΉμ μ€ν¬λ¦½νΈμ μ΄λ¦μ νμΈνκ³ μ΄λ₯Ό λλ²κΉ ν μ μλ€.
<link>, <script>(deferμ asyncκ° μλ κ²½μ°) μ κ°μ 리μμ€λ₯Ό λ§λλ©΄ νμ± λμ€μ μμ²λ¨rel="preload": λͺ
μμ μΌλ‘ μ°μ λ‘λ©ν 리μμ€λ₯Ό μ§μ rel="prefetch": λμ€μ νμν 리μμ€λ₯Ό 미리 λ°μλκΈ°ClientHello β ServerHello + μΈμ¦μ β clientKey β μνΈν μ€μ μλ£ClientHelloμ Session Ticketμ νμ₯ νλμ ν¬ν¨νμ¬ λ³΄λ)ACK 1001 β "λ€μμ 1001λ²λΆν° 보λ΄μ€"<script> νκ·Έλ κΈ°λ³Έμ μΌλ‘ νμ± μ€λ¨async: λ€μ΄λ‘λ λ³λ ¬, μ€ν μ¦μdefer: λ€μ΄λ‘λ λ³λ ¬, νμ± μλ£ ν μ€νπ‘ CSSOM λΉλλ λ³λͺ© ꡬκ°μΈκ°?
κ°λ°μ λꡬμμ μ°Ύμλ³Ό μ μλ Recalculate Styleμ (CSS ꡬ문 λΆμ + μ€νμΌ νΈλ¦¬ μμ± + μ¬κ· κ³μ°)μ ν¬ν¨ν μ 체 μκ°μ νμν©λλ€.
μ΄λ μ 체 λ¨κ³κ° λΉ λ₯΄κ² μ²λ¦¬λλ©°, DNS μ‘°ν 1λ²λ³΄λ€ μ§§μ μκ°μ κ³μ°λκΈ° λλ¬Έμ λλ€.
π€ CSSκ° μ€μ μ±λ₯μ μν₯μ μ£Όλ ꡬκ°
- 리νλ‘μ°(Reflow): λμ€μ λ°μνλ λ μ΄μμ μ¬κ³μ°
- λ μ΄μμ μ¬ννΈ(Layout Shift): μμ μμΉ λ³κ²½μΌλ‘ μΈν νλ μ λλ‘ μ λ°
π§΅ Web Worker vs Promise
Promise
- λΉλκΈ° μμ μ λ©μΈ μ€λ λμμ μμ½
- λ°±κ·ΈλΌμ΄λμμ μ€νλμ§λ§, μ½λ°±μ΄ μ€νλλ μμ μ λ©μΈ μ€λ λ μ¬μ©
- μ¦, CPU μ§μ½μ μΈ μμ μ΄ promise μ½λ°± μμ μλ€λ©΄ β λ©μΈ μ€λ λ μ μ β λ λλ§ μ§μ° λ°μ κ°λ₯
Web Worker
- λ©μΈ μ€λ λμ μμ ν λΆλ¦¬λ μ€ν νκ²½
- λ³λ μ€λ λμμ μ€ν β λ λλ§ μ°¨λ¨ μμ΄ λ¬΄κ±°μ΄ μμ κ°λ₯
- λ¨, λ©λͺ¨λ¦¬ μλΉ μ¦κ°
- λ©μΈκ³Ό μ컀 κ° μ§μ DOM μ κ·Ό λΆκ°, μ€μ§ λ©μμ§ νλ‘ ν΅μ β¨
AOMμ΄λ?
https://wicg.github.io/aom/explainer.html
- AOM(Accessibility Object Model)μ
μΉ κ°λ°μκ° μ κ·Όμ± νΈλ¦¬λ₯Ό μ§μ μ μ΄ν μ μλλ‘ νλ API- κΈ°μ‘΄μλ aria-* μμ±μΌλ‘λ§ μ νλ μ κ·Όμ± μ μ΄κ° κ°λ₯νμ§λ§,
AOMμ μ¬μ©νλ©΄ JSμμ λ³΄λ€ λμ μΌλ‘ μ κ·Όμ±κ³Ό κ΄λ ¨λ μμ±μ κ΄λ¦¬ν μ μκ² λ¨