
프런트 엔드 성능 최적화: HTML 리플로우를 줄이고 다시 그리는 주요 단계에는 특정 코드 예제가 필요합니다.
웹 애플리케이션의 급속한 발전으로 인해 사용자는 웹 페이지에 대한 성능 요구 사항이 점점 더 높아지고 있습니다. 프런트 엔드 성능 최적화는 고성능 웹 페이지를 달성하는 데 핵심적인 부분입니다. 프런트엔드 성능 최적화에서는 HTML 리플로우와 다시 그리기를 줄이는 것이 중요한 방향입니다.
HTML 리플로우(reflow)는 브라우저가 웹 페이지의 일부 또는 전체를 다시 렌더링하는 프로세스를 말합니다. DOM 구조가 변경되고, 페이지 콘텐츠가 변경되고, 페이지 크기가 변경되고, 스타일이 변경될 때마다 브라우저는 요소의 기하학적 속성을 다시 계산하고 다시 레이아웃해야 합니다. 이 프로세스로 인해 성능이 저하됩니다. HTML 리페인트(repaint)는 브라우저가 새로운 계산 결과를 바탕으로 페이지를 다시 그리는 과정을 말합니다.
HTML 리플로우 및 다시 그리기를 줄이기 위해 다음과 같은 주요 단계를 취할 수 있습니다.
- JavaScript 애니메이션 대신 CSS3 애니메이션 사용: CSS3 애니메이션을 사용하면 브라우저의 하드웨어 가속을 최대한 활용하고 리플로우 및 다시 그리기 횟수를 줄일 수 있습니다. 대조적으로, JavaScript로 구현된 애니메이션은 많은 리플로우 및 다시 그리기 작업을 트리거하는 경향이 있습니다. 다음은 CSS3 애니메이션을 사용한 샘플 코드입니다.
1 2 3 4 5 6 7 8 | @keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.fade-in {
animation: fadeIn 1s;
}
|
로그인 후 복사
- DOM 요소의 일괄 작업: JavaScript에서 DOM 요소의 빈번한 작업은 리플로우 및 다시 그리기의 일반적인 원인 중 하나입니다. 이러한 상황의 발생을 줄이기 위해 DOM의 일괄 작업을 사용하도록 노력해야 합니다. 예를 들어
DocumentFragment
来进行批量插入元素,可以使用display: none
를 사용하여 요소를 숨기고 최종적으로 표시하기 전에 여러 번 수정할 수 있습니다. 다음은 DOM 요소의 일괄 작업을 위한 샘플 코드입니다.
1 2 3 4 5 6 7 8 9 | var fragment = document.createDocumentFragment();
for ( var i = 0; i < 1000; i++) {
var div = document.createElement( 'div' );
div.textContent = 'Item ' + i;
fragment.appendChild(div);
}
document.body.appendChild(fragment);
|
로그인 후 복사
- 가상 목록 기술 사용: 많은 양의 데이터를 표시해야 할 때 가상 목록 기술을 사용하면 성능을 크게 향상시킬 수 있습니다. 가상 목록은 현재 표시되는 요소 중 일부만 렌더링하며 전체 요소는 렌더링하지 않습니다. 이렇게 하면 페이지의 DOM 노드 수가 줄어들어 리플로우 및 다시 그리기 횟수가 줄어듭니다. 다음은 가상 목록에 대한 샘플 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var list = document.getElementById( 'list' );
var items = [];
for ( var i = 0; i < 1000000; i++) {
items.push( 'Item ' + i);
}
window.addEventListener( 'scroll' , function () {
var scrollTop = window.scrollY;
var start = Math. floor (scrollTop / 30);
var end = Math. ceil ((scrollTop + window.innerHeight) / 30);
list.innerHTML = items.slice(start, end ).join( '' );
});
|
로그인 후 복사
위의 주요 단계를 구현하면 HTML 리플로우 및 다시 그리기 횟수를 크게 줄여 웹 페이지의 성능과 사용자 경험을 향상시킬 수 있습니다. 물론 위의 샘플 코드 외에도 리플로우와 다시 그리기를 줄이는 데 사용할 수 있는 다른 최적화 기술이 많이 있으며, 이는 특정 애플리케이션 시나리오에 따라 선택하고 조정해야 합니다. 지속적인 연습과 최적화를 통해 보다 효율적인 웹페이지를 만들 수 있습니다.
위 내용은 HTML 리플로우 및 다시 그리기를 줄이기 위한 주요 전략: 프런트엔드 성능 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!