
브라우저 엔진 : 유저 인터페이스와 렌더링 엔진 사이의 중개자로, 유저 인터페이스에서 받은 입력에 따라 렌더링 엔진을 쿼리하고 처리한다.
렌더링 엔진 : HTML/CSS를 파싱해서 사용자가 요청한 특정 웹 페이지를 화면에 렌더링하는 역할을 한다.

display: none 이거나 <head> 처럼 보이지 않는 요소는 포함되지 않는다. defer로 표시하면 문서 파싱이 완료된 후 실행된다.async로 표시하면 비동기로 실행된다.
position(위치)이나 geometries(기하학적 요소) 재계산visibility 변경, outline 변경, background 변경 등에 의해 발생한다.transform 또는 opacity 변경에 의해 발생한다.will-change 또는 translateZ를 사용해서 요소를 자체 레이어로 승격할 수 있다.will-change 속성을 사용하면 해당 레이어는 GPU에 업로드된다.
const bodyStyle = document.body.style; // cache
bodyStyle.padding = "20px"; // reflow, repaint
bodyStyle.border = "10px solid red"; // reflow, repaint
bodyStyle.color = "blue"; // repaint only, no dimensions changed
bstyle.backgroundColor = "#cc0000"; // repaint
bodyStyle.fontSize = "2em"; // reflow, repaint
// new DOM element - reflow, repaint
document.body.appendChild(document.createTextNode('Hello!'));
https://csstriggers.com/ 에서 브라우저 엔진 별로 layout / paint / composite를 발생시키는 css properties를 확인할 수 있다. Webkit - Safari, Blink - Chrome, Gecko - Firefox, EdgeHTML - 구Edge다.