자바스크립트,프레임워크,라이브러리,CSS전처리기를 쓰던
기본적인 내용이 조금이라도 정리가 잘 되어 있어야 지서 성능이 좋은 웹어플리케이션을 만들 수가 있다.
레이아웃 단계에서 계산이 완료 되면 바로 브라우저에 그림을 그리지 않는다.
화면을 픽셀로 변환하여 그리는 작업인 레이어를 수행한다.
각각의 요소를 어떻게 배치했느냐에 따라 레이어 단계를 만들어 레이어별로 paint를 준비만 해놓는다.
"그냥 한번에 브라우저가 다 그리면 되지 왜 복잡하게 레이어 기능을 이용해서 나누는거지?"
- 브라우저가 성능개선을 위해서 스스로 준비를 해 놓는 것
- 레이어 기능을 이용하지 않고 한 요소만 변경을 한다고 했을때 브라우저는 한 요소만 변경하기 위해서 다시 렌더링 과정을 거쳐야한다.
- 레이어 단위로 하게 되면 수정되는 요소 레이어만 수정하면 되기 때문에 좀 더 성능이 개선 된다.
완성
브라우저에선 레이어 기능을 이용하여 성능개선을 위해서 나름의 노력을 하고 있다.
CSS에 will-change 라는 속성 값이 있는데 브라우저에게 이 요소는 변화될지도 모른다고 언질을 주는것이다.
이렇게 언질을 주면 새로운 레이어단계를 만들어서 추가해 놓는다
하지만 will-change라는 속성값을 너무 많이 쓰게 되면 불필요한 레이어가 많이 만들어지기 때문에 브라우저 성능이 나빠질 수 있어 많이 남용해서는 안된다.
composition 만 다시 일어난다면 베스트케이스
paint 단계부터 일어난다면 평범
layout 단계부터 일어나야한다면 최악의 경우
리플로우(Reflow)
리페인트 (Repaint)
리플로우가 일어나면 반드시 리페인트가 일어납니다.