
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
1
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
2
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
3

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
4
[새 시크릿 창] 열기F12(개발자 도구) 실행[Lighthouse] 선택Mode: NavigationDevice: MobileCategories: Performance 체크
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
5


당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
6
LCP 태그가 붙은 Render blocking requests가 원인 요소로 지목됨.Google Fonts가 1,000ms 동안 로딩되며
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
7
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
8
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
9

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
10
"단순히 로딩이 빠른 것이 아니라, 보고(LCP), 누르고(INP), 레이아웃 이동이 없는(CLS) 쾌적함을 목표로 합니다."
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
11


브라우저는 HTML을 읽다가 폰트를 만나면 '해당 리소스가 모두 로드될 때까지 텍스트 렌더링을 보류할게'라고 동작합니다. 이것이 바로 렌더 블로킹(Render Blocking)입니다.
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
12
// 1. 무거운 폰트 호출 (차단 발생)
@import url(
'https://fonts.googleapis.com/...all-weights'
);
// 2. 최적화 없는 이미지
<img src="/huge-hero.png" />
// 1. 폰트 차단 해제
&display=swap
// 2. 이미지 우선순위 상향 및 포맷 변경
<link rel="preload" as="image" href="/hero.webp" />
<img src="/hero.webp" width="1200" height="600"
loading="eager" />당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
13


당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
14
// 크기 지정이 없어 로딩 후 화면 레이아웃 불안정 발생
<img src="/ad-banner.png" />// 방법 1: HTML에서 직접 크기 지정
<img src="/ad-banner.png" width="800" height="400" />
// 방법 2: CSS aspect-ratio 사용 (권장)
img {
aspect-ratio: 16 / 9;
width: 100%;
}이미지 로드 전에 브라우저에 미리 렌더링 공간을 할당하여, 이미지가 로드된 후에도 주변 요소의 위치 안정성을 유지합니다.
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
15

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
16
// 메인 스레드를 꽉 잡고 놓지 않는 반복문
button.onclick = () => {
for (let i = 0; i < 100000000; i++) {
// 브라우저를 멈추게 하는 무거운 연산
}
};// 작업을 쪼개서 메인 스레드에게 쉴 틈 주기
button.onclick = () => {
setTimeout(() => {
// 비동기로 분리하여 클릭 반응성 확보
}, 0);
};당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
17

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
18
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
19
"점수 측정은 끝! 이제 실제 성능 저하의 근본 원인을 규명할 시간입니다."
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
20
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
21

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
22

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
23
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
24

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
25
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
26


당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
27

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
28
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
29
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
30
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
31
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
32
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
33

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
34

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
35
화면 변화와 상관없는 3번(부모 영향) 케이스를 식별하고 제어하는 것이 성능 최적화의 첫걸음입니다.
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
36
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
37

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
38
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
39
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
40

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
41
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
42
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
43
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
44
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
45
App
└── SearchBar
└── FilterPanel
└── HeavyList
└── ListItem (× 수천 개)
└── ExpensiveCalculation
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
46
git clone https://github.com/becover/the-heavy-list-app.git
cd the-heavy-list-app
npm install
npm run dev당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
47
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
48
font-display당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
49
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
50
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
51
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
52

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
53
<picture>
<source srcset="image.avif" type="image/avif" />
<source srcset="image.webp" type="image/webp" />
<img src="image.jpg" alt="..." />
</picture>당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
54
font-display: swap; 설정aspect-ratio 또는 고정 크기 값 지정당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
55

당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
56
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
57
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
58
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
59
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
60


당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
61
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
62


당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
63
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
64


당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
65
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
66


당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
67
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
68
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
69
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
70
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
71
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
72
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
73
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
74
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
75
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
76
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
77
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
78
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
79
당신의 웹이 느린 이유: 프론트엔드 성능 구출 작전

COPYRIGHT© DAMISEO All rights reserved.
80