"매 CRP = HTML/CSS/JS → pixel 의 매 변환 단계 sequence.". 매 단계: DOM 구축 → CSSOM 구축 → Render Tree → Layout (reflow) → Paint → Composite. 매 단계마다 매 blocking resource 의 latency가 매 LCP / FCP 의 결정. 매 2026 perspective는 INP / Core Web Vitals + speculation rules + View Transitions API.
매 핵심
매 단계
DOM: HTML parse → Document Object Model.
CSSOM: CSS parse → CSS Object Model (매 render-blocking).
Render Tree: DOM + CSSOM merge — 매 visible nodes only.
Layout (Reflow): geometry 계산 — 매 viewport relative position/size.
Paint: 매 pixel 의 fill — layer별.
Composite: GPU 의 layer 의 final 합성.
매 blocking
CSS = 매 render-blocking — <link rel="stylesheet"> HEAD 안에서 매 parse 차단.
JS = 매 parser-blocking — <script> 매 DOM build 차단 (async/defer 외).
Font = 매 paint-blocking (FOIT) — font-display: swap 권장.
Speculation Rules API (Chrome 122+) — prerender next nav.
💻 패턴
1. Critical CSS inline
<head><style>/* above-the-fold only */body{margin:0;font:16px/1.5system-ui;}.hero{min-height:60vh;}</style><linkrel="preload"href="/main.css"as="style"onload="this.rel='stylesheet'"><noscript><linkrel="stylesheet"href="/main.css"></noscript></head>
2. Defer + module scripts
<scriptsrc="/app.js"defer></script><scripttype="module"src="/app.mjs"></script><!-- module = defer by default -->
// BAD — read/write/read/write triggers reflow each time
elements.forEach((el)=>{el.style.width=el.offsetWidth+10+'px';});// GOOD — batch reads then writes
constwidths=elements.map((el)=>el.offsetWidth);elements.forEach((el,i)=>{el.style.width=widths[i]+10+'px';});