DocumentFragment 인터페이스는 부모가 없는 아주 작은 document 객체를 나타냅니다. Document의 경량화된 버전으로 사용되며 표준문서와 같이 노드로 구성된 문서 구조의 일부를 저장합니다. 중요한 차이점은 DocumentFragment는 활성화된 문서 트리 구조의 일부가 아니기 때문에 fragment를 변경해도 문서에는 영향을 미치지 않으며(reflow 포함) 성능에도 영향이 없다는 점입니다. - MDN
여기서 중요한 점은 DocumentFragment는 document객체라는 점. 즉, 일반적인 DOM노드 처럼 노드로 구성되어 문서 구조를 저장한다는 것이다. 다만, 차이점이라면 경량화되어 있다는 점과, Tree 구조의 일부가 아니기 때문에, 문서에 영향을 끼치지 않는다는 점이다.
WebKit Browser rendering workflow
DOM API등으로 인한 DOM(Document Object Model) Tree, CSSOM(CSS Object Model)에 변경이 생기게 되면,
브라우저는 변경을 감지하고, 브라우저를 렌더링하는데 필요한 결과물인 Render Tree를 재구성하게 된다.
이때, 레이아웃(요소의 위치나 크기)에 변경이 생기게 되면, 요소들을 재배치해야 하는데,
요소를 배치하는 Layout과정이 다시 일어나게 되는 것을 바로 리플로우(reflow)라고 한다.
리플로우는 렌더링과정에서 가장 큰 리소스를 필요로 하는 작업으로 웹/앱의 성능상 최소화해야 한다.
(Firefox의 렌더링 엔진인 Gecko 같은 경우는 Layout과정 자체를 reflow라고 명명한다.)