Service
critical-script
2026.08.14
·Web·by Homin.Lee#CLS#LCP#Optimization#TypeScript#Vite
핵심 포인트
- 1`critical-script`는 메인 JavaScript 번들보다 먼저 실행되는 인라인 스크립트를 생성하여 API 프리페치와 리소스 로딩을 앞당기는 Vite 플러그인입니다.
- 2해당 플러그인을 도입하면 번들 실행 전 API 요청을 조기에 수행하여 LCP와 CLS 등 웹 성능 지표를 효과적으로 개선할 수 있습니다.
- 3제공된 벤치마크 시뮬레이션 환경을 통해 네트워크 및 실행 지연 상황에서 데이터 요청 속도가 최적화되는 과정을 직접 확인할 수 있습니다.
이 문서는 웹 페이지의 LCP(Largest Content Paint) 및 CLS(Cumulative Layout Shift) 지표를 최적화하기 위해 고안된 Vite 플러그인인 critical-script에 대해 설명합니다. 이 도구는 핵심적인 TypeScript 모듈을 메인 자바스크립트 번들이 로드되기 전 인라인 스크립트(Inline Script) 형태로 실행하여 웹 성능을 개선하는 전략을 다룹니다.
1. 문제 제기: 기존 로딩 방식의 비효율성
일반적인 웹 애플리케이션 환경에서는 API 호출과 리소스 프리로드가 메인 JavaScript 번들에 의존합니다. 이 경우 다음과 같은 순차적 지연이 발생합니다.- 지연 구조:
HTML파싱 →JavaScript번들 다운로드 → 번들 실행 →API호출 → 응답 수신 → 이미지 및 콘텐츠 렌더링. - 이 방식은 번들 크기가 커지거나 네트워크 상황이 나쁠 경우 API 요청 시작 시점이 크게 늦어지며, 결과적으로 LCP 지연 및 초기 화면 렌더링 품질 저하를 야기합니다.
2. 핵심 방법론: critical-script의 도입
critical-script는 브라우저가 번들을 해석하기 전에 즉각적으로 실행 가능한 코드를head 태그 내에 인라인으로 삽입하여 데이터 페칭과 리소스 로드를 병렬화합니다.- 동작 방식:
build시점에 필수적인 초기화 로직(예: API 프리페치, 웹뷰 네이티브 브릿지 통신 등)을 별도의 인라인 스크립트로 추출합니다.- 메인 번들이 다운로드되는 동안 브라우저는 이 인라인 스크립트를 즉시 실행하여 서버에 데이터를 요청합니다 ().
window객체에 데이터를 저장하여 메인 번들이 로드된 후 즉시Promise형태로 데이터를 사용할 수 있게 합니다.
3. 성능 최적화 효과
본 문서에서는 시뮬레이션 환경을 통해 critical-script 적용 전후의 성능 차이를 입증합니다.- 벤치마크 조건:
- 네트워크 환경: 느린 4G(Slow 4G).
- 변수: API 응답 지연(), 번들 초기 실행 시간().
- 기대 효과:
- API 호출을 메인 번들 실행과 독립적으로 분리함으로써 전체 로딩 완료 시간(Time to Interactive 및 LCP 도달 시간)을 단축합니다.
- 특히 이미지 URL이 API 응답에 포함되어 있는 경우, 이미지를 더 빠르게 요청할 수 있어 시각적 안정성(CLS)과 첫 화면 로딩 속도를 유의미하게 향상합니다.