# [[Total Blocking Time (TBT)|Total Blocking Time (TBT]] ## πŸ“Œ Brief Summary Total Blocking Time(TBT)λŠ” λΈŒλΌμš°μ €μ˜ 메인 μŠ€λ ˆλ“œκ°€ μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰ λ“±μœΌλ‘œ 인해 μ°¨λ‹¨λ˜μ–΄ μ‚¬μš©μž μƒν˜Έμž‘μš©(μž…λ ₯, 클릭 λ“±)을 μ²˜λ¦¬ν•  수 μ—†λŠ” μ‹œκ°„μ„ μΈ‘μ •ν•˜λŠ” 핡심 μ„±λŠ₯ μ§€ν‘œμž…λ‹ˆλ‹€ [1, 2]. 이 μ§€ν‘œλŠ” [[Lighthouse|Lighthouse]] μ„±λŠ₯ 점수의 30%λ₯Ό μ°¨μ§€ν•˜λ©°, μ‚¬μš©μž κ²½ν—˜κ³Ό SEO μˆœμœ„μ— 직접적인 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€ [1]. 특히 React ν™˜κ²½μ—μ„œλŠ” μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR) 이후 전체 νŽ˜μ΄μ§€λ₯Ό ν•œ λ²ˆμ— ν•˜μ΄λ“œλ ˆμ΄μ…˜([[Hydration|Hydration]])ν•  λ•Œ TBTκ°€ κΈ‰μ¦ν•˜μ—¬ μ‹¬κ°ν•œ μ„±λŠ₯ μ €ν•˜μ™€ μž…λ ₯ 지연을 μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1, 3]. ## πŸ“– Core Content * **ν•˜μ΄λ“œλ ˆμ΄μ…˜(Hydration)κ³Ό TBT의 상관관계** * ReactλŠ” 기본적으둜 μ‚¬μš©μž 화면에 μ¦‰μ‹œ 보이지 μ•ŠλŠ” μ»΄ν¬λ„ŒνŠΈκΉŒμ§€ ν¬ν•¨ν•˜μ—¬ 전체 νŽ˜μ΄μ§€λ₯Ό λ™μ‹œμ— ν•˜μ΄λ“œλ ˆμ΄μ…˜ν•©λ‹ˆλ‹€ [1]. * μ΄λŸ¬ν•œ μ ‘κ·Ό 방식은 λΆˆν•„μš”ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ 싀행을 μœ λ°œν•˜μ—¬ λΈŒλΌμš°μ €μ˜ 메인 μŠ€λ ˆλ“œλ₯Ό 차단(Block)ν•˜κ²Œ 되고, 결과적으둜 κΈ΄ TBT와 Lighthouse 점수 ν•˜λ½μœΌλ‘œ μ΄μ–΄μ§‘λ‹ˆλ‹€ [1, 3]. * TBTκ°€ κΈΈμ–΄μ§€λ©΄ μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€ λ‘œλ“œ 직후 λ²„νŠΌμ„ 클릭해도 μ¦‰κ°μ μœΌλ‘œ λ°˜μ‘ν•˜μ§€ μ•ŠλŠ” μ‹¬κ°ν•œ μž…λ ₯ μ§€μ—°(Input lag)을 κ²½ν—˜ν•˜κ²Œ λ©λ‹ˆλ‹€ [1, 4]. * **μ€‘μš” λ Œλ”λ§ 경둜(CRP)μ—μ„œμ˜ 차단 μ‹œκ°„** * TBTλŠ” ν•˜μ΄λ“œλ ˆμ΄μ…˜λΏλ§Œ μ•„λ‹ˆλΌ λΈŒλΌμš°μ €μ˜ 초기 λ Œλ”λ§ 과정과도 관련이 μžˆμŠ΅λ‹ˆλ‹€. * [[CSSOM|CSSOM]]을 κ΅¬μΆ•ν•˜λŠ” κ³Όμ •μ—μ„œ CSS μ„ νƒμž(Selector)의 λ³΅μž‘μ„±μ€ λ Œλ”λ§ 속도에 영ν–₯을 λ―ΈμΉ˜λ―€λ‘œ, μ„ νƒμžμ˜ λͺ…μ‹œμ„±(specificity)을 μ΅œμ ν™”ν•˜κ³  CSSλ₯Ό μ΅œμ†Œν™”(minify)ν•˜λŠ” 것은 μ€‘μš” λ Œλ”λ§ 경둜(CRP)의 총 차단 μ‹œκ°„μ„ μ€„μ΄λŠ” 기본적인 μ΅œμ ν™” κΈ°μˆ μž…λ‹ˆλ‹€ [5]. * **TBTλ₯Ό μ΅œμ†Œν™”ν•˜λŠ” λ Œλ”λ§ μ΅œμ ν™” μ „λž΅** * **선택적 ν•˜μ΄λ“œλ ˆμ΄μ…˜ 및 점진적 λ‘œλ”© (Selective Hydration & Progressive Loading):** λͺ¨λ“  것을 ν•œ λ²ˆμ— ν•˜μ΄λ“œλ ˆμ΄μ…˜ν•˜λŠ” λŒ€μ‹ , 슀크둀 상단(above-the-fold) μ½˜ν…μΈ λ₯Ό μš°μ„  μ²˜λ¦¬ν•˜κ³  덜 μ€‘μš”ν•œ μ»΄ν¬λ„ŒνŠΈλŠ” μ§€μ—°μ‹œν‚΅λ‹ˆλ‹€ [6]. [[Next.js|Next.js]]의 동적 κ°€μ Έμ˜€κΈ°(`next/dynamic`)λ₯Ό ν™œμš©ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈ 싀행을 λΆ„μ‚°μ‹œμΌœ 메인 μŠ€λ ˆλ“œ 차단을 막고 TBTλ₯Ό 크게 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€ [6, 7]. * **κ°€μ‹œμ„± 기반 μ§€μ—° ν•˜μ΄λ“œλ ˆμ΄μ…˜ (Lazy Hydration Based on Visibility):** ν™”λ©΄ ν•˜λ‹¨ μ½˜ν…μΈ κ°€ λ·°ν¬νŠΈμ— λ“€μ–΄μ˜¬ λ•Œλ§Œ ν•˜μ΄λ“œλ ˆμ΄μ…˜λ˜λ„λ‘ μ§€μ—°μ‹œν‚€λŠ” 방법(예: IntersectionObserver ν™œμš©)을 톡해 νŠΉμ • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ TBTλ₯Ό μ΅œλŒ€ 40%κΉŒμ§€ 단좕할 수 μžˆμŠ΅λ‹ˆλ‹€ [7, 8]. * **React μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ ([[React Server Components|React Server Components]]) ν™œμš©:** App Router와 같은 ν™˜κ²½μ—μ„œ μ„œλ²„ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•˜λ©΄ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ μ „ν˜€ μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ§€ μ•ŠμœΌλ―€λ‘œ ν•˜μ΄λ“œλ ˆμ΄μ…˜ κ³Όμ • μžμ²΄κ°€ ν•„μš” μ—†μ–΄μ Έ TBT와 μžλ°”μŠ€ν¬λ¦½νŠΈ νŽ˜μ΄λ‘œλ“œλ₯Ό 획기적으둜 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€ [8]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Hydration|Hydration]], Critical Rendering Path (CRP), Server-Side Rendering (SSR), [[React Server Components|React Server Components]] - **Projects/Contexts:** [[Next.js|Next.js]], [[Lighthouse|Lighthouse]] - **Contradictions/Notes:** μ†ŒμŠ€μ˜ λ‚΄μš© κ°„ μƒμΆ©λ˜λŠ” 뢀뢄은 μ—†μœΌλ©°, λͺ¨λ“  μ†ŒμŠ€κ°€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κ³Όλ„ν•œ 싀행이 메인 μŠ€λ ˆλ“œλ₯Ό μ°¨λ‹¨ν•˜μ—¬ TBTλ₯Ό μ•…ν™”μ‹œν‚¨λ‹€λŠ” 점에 λ™μ˜ν•©λ‹ˆλ‹€. λ˜ν•œ, 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ Œλ”λ§ μ΅œμ ν™”(점진적 ν•˜μ΄λ“œλ ˆμ΄μ…˜, μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš© λ“±)κ°€ ν•„μˆ˜μ μž„μ„ κ°•μ‘°ν•©λ‹ˆλ‹€. --- *Last updated: 2026-04-25*