피드로 돌아가기
Dev.toFrontend
원문 읽기
CSS 최적화 전 Third-party Script 제거를 통한 메인 스레드 점유율 개선
Seven third-party script patterns we triage before touching CSS
AI 요약
Context
웹 페이지 성능 저하의 주원인을 CSS 스타일링으로 오인하여 불필요한 최적화 리소스를 투입하는 사례가 빈번함. 실제 병목은 초기 로드 시 실행되는 Third-party JavaScript의 과도한 메인 스레드 점유와 DOM 변조로 인한 렌더링 지연에 있음.
Technical Solution
- Tag Manager의 무분별한 전역 로드 방식을 Route 및 User Intent 기반의 조건부 트리거 구조로 전환하여 불필요한 네트워크 요청 및 Parse/Execute 비용 제거
- Chat Widget 등 무거운 외부 라이브러리를 First Paint 이후 혹은 사용자 클릭 시점에 로드하는 Load on Intent 전략 채택으로 LCP 및 INP 개선
- Client-side A/B Test의 DOM 변조로 인한 Layout Instability 해결을 위해 Critical Variant의 Server-side 렌더링 전환 유도
- iframe 기반의 무거운 외부 임베드를 썸네일과 버튼으로 대체하는 Facade 패턴 적용을 통해 초기 JavaScript 실행량 및 CPU 부하 감소
- Defer 속성만으로 해결되지 않는 Execution Burst 문제를 해결하기 위해 중요도에 따른 실행 단계(Phasing) 구분 및 Idle Window 활용 배치
- Third-party 스크립트 전용 Performance Budget 수립 및 소유권 기반의 거버넌스 체계 구축을 통해 점진적 스택 팽창 방지
실천 포인트
- LCP 요소 확인 전 Third-party Script의 실행 비용(Bytes, Execution Time, Main-thread Time) 측정 - 모든 외부 스크립트에 대해 '비즈니스 가치 vs 성능 비용'의 Trade-off 분석 실시 - 초기 뷰포트 내 필수적이지 않은 스크립트의 20%를 우선 제거하거나 지연 로딩 적용 - 단순 Defer 설정이 아닌 Performance 패널의 Long Task 분석을 통한 실행 시점 최적화