Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- #프론트엔드개발
- 코드리뷰
- flutter 오류
- Node.js
- 컴포넌트
- Promise
- JavaScript
- 퍼포먼스 최적화
- 웹 성능 최적화
- macos flutter
- fe
- 웹 성능
- 프론트엔드
- 자바스크립트공부
- html
- cmdline-tools missing
- dom
- 패키지 스크립트
- React
- aondroid toolchain 오류
- jsx
- 자바스크립트
- flutter android sdk
- css
- 웹개발
- 프라미스체이닝
- 웹 개발
- 풀스택 개발
- 비동기프로그래밍
- 국제화(i18n)
Archives
- Today
- Total
sodol-dotcom
Reflow & Repaint 본문
Reflow와 Repaint는 웹 페이지의 렌더링 과정에서 발생하는 두 가지 중요한 개념이다.
이 개념을 이해하는 것은 성능 최적화에 큰 도움이 된다.
Reflow (리플로우)
- 정의: Reflow는 DOM 요소의 크기, 위치, 또는 구조가 변경될 때 발생한다. 예를 들어, 요소의 크기를 변경하거나, 새로운 요소를 추가하거나, CSS 스타일을 수정할 때 발생한다.
- 예시:
- 브라우저에서 텍스트의 폰트 크기를 변경할 때
- 요소의 `margin`, `padding`, `border` 등을 수정할 때
- 화면 크기가 변경될 때 (예: 창 크기 조절)
- 중요성: Reflow가 발생하면 브라우저는 레이아웃을 다시 계산해야 하므로 CPU와 메모리 자원을 소모하게 된다. 따라서 너무 많은 Reflow는 성능 저하를 일으킬 수 있다.
Repain (리페인트)
- 정의: Reflow가 발생하면 브라우저는 레이아웃을 다시 계산해야 하므로 CPU와 메모리 자원을 소모하게 된다. 따라서 너무 많은 Reflow는 성능 저하를 일으킬 수 있다.
- 예시:
- 배경색을 변경할 때
- 글자의 색상을 바꿀 때
- CSS 애니메이션으로 색상이 변화할 때
- 중요성: Repaint는 Reflow보다 성능에 미치는 영향이 적다. 하지만 너무 많은 Repaint도 성능에 영향을 미칠 수 있으므로 주의해야 한다.
요약
- Reflow: DOM 요소의 구조가 변경되어 레이아웃을 다시 계산해야 할 때 발생한다. 성능에 더 큰 영향을 미친다.
- Repaint: 요소의 스타일이 변경되지만 레이아웃이 변하지 않을 때 발생한다. 성능에 미치는 영향은 상대적으로 적다.
성능 최적화 팁
- 배치 작업: DOM에 여러 번 접근하기보다는 변경할 내용을 한 번에 적용한다.
- CSS 클래스 변경: 스타일을 직접 수정하기보다는 CSS 클래스를 추가/삭제하는 방식으로 변경한다.
- 오프스크린 요소 사용: 변경이 필요한 요소를 화면 밖으로 이동시켜서 Reflow를 최소화한다.
'Fundamentals > Browser Mechanics' 카테고리의 다른 글
브라우저의 렌더링 과정(Critical Rendering Path) (2) | 2024.10.02 |
---|---|
브라우저에서 어떻게 DOM으로 변환되는지 (0) | 2024.09.09 |
JavaScript와 HTML의 상호작용 그리고 DOM (0) | 2024.09.09 |