수정된 랜더 트리를 다시 랜ㄷ링 하는 과정에서 발생하는 것으로 웹 어플리케이션의 성능을 떨어뜨리는 주된 요인이다. 극단적인 경우, CSS효과로 인해 JavaScript의 실행 속도가 느려질수도 있다.
따라서 Browser Rendering Process를 이해하고 적절히 Optimization(최적화)해줄 필요성이 있다.
브라우저마다 다른 랜더링 엔진을 사용하고 있다.
랜더링 엔진에 따라 동작하는 과정이 다르지만, reflow와 repaing는 비슷한 순서로 동작한다.
브라우저가 네트워크 계층에서 요청된 데이터를 받아오면 렌더링 엔진이 작동하기 시작한다.
HTML code에서 DOM Tree를 CSS code에선 style structure를 만든다
DOM Tree와 style structure를 합쳐 화면에 그리기 위한 Render Tree 생성
Render Tree 정보로 Layout을 만들어 DOM에 배치한다.
생성된 정보를 바탕으로 실제 화면을 그린다.
Layout이 그려진 곳에 render tree 정보를 바탕으로 화면을 그린다.
문서 내 요소의 위치와 도형을 다시 계산하기 위한 웹 브라우저 프로세스의 이름으로, 문서의 일부 또는 전체를 다시 렌더링하는데 사용된다.
단일 엘리먼트 하나를 변경해도, 하위 엘리먼트나 상위 엘리먼트 등에 영향을 미칠 수 있다.
리플로우는 브라우저에서 사용자를 차단하는 작업이므로, 개발자가 리플로우 시간을 향상하는 방법을 이해하고 다양한 문서 속성(DOM 심도, CSS 규칙 효율성, 다양한 스타일 유형 변경)이 리플로우 시간에 미치는 영향을 이해하는 것이 중요하다.
레이아웃에는 영향을 주지 않지만, 가시성에는 영향을 주는 엘리먼트가 변경되면 발생한다.
Reflow 후에 발생한다.
예) opacity, background-color, visibility, ouline
원 글 보기
추가 자료 보기
reflow trigger와 Optimization
CSS 원리에 따른 성능차이