찾다
웹 프론트엔드CSS 튜토리얼프런트엔드 성능 최적화: 다시 그리기 및 리플로우를 줄이기 위한 팁 및 방법

프런트엔드 성능 최적화: 다시 그리기 및 리플로우를 줄이기 위한 팁 및 방법

Jan 26, 2024 am 10:42 AM
프런트엔드 성능: 성능피하다: 피하다다시 그리기 및 리플로우: 렌더링

프런트엔드 성능 최적화: 다시 그리기 및 리플로우를 줄이기 위한 팁 및 방법

프런트 엔드 성능 향상: 다시 그리기 및 리플로우를 방지하는 팁과 방법

프런트 엔드 개발에서 성능 최적화는 중요한 주제입니다. 그중에서도 불필요한 다시 그리기(Repaint) 및 리플로우(Reflow) 작업을 피하는 것이 페이지 성능을 향상시키는 열쇠입니다. 이 기사에서는 개발자가 다시 그리기 및 리플로우를 방지하는 데 도움이 되는 몇 가지 기술과 방법을 소개하고 구체적인 코드 예제를 제공합니다.

1. 다시 그리기 및 리플로우란 무엇입니까

  1. 다시 그리기: DOM 요소의 스타일이 기하학적 속성(예: 위치 및 크기)에 영향을 주지 않고 변경되면 브라우저는 다시 그리기 작업을 수행합니다. 다시 그리기는 레이아웃에 영향을 주지 않고 요소의 시각적 효과를 업데이트하는 것을 의미합니다.
  2. 리플로우: DOM 요소의 기하학적 속성이 변경되면 브라우저는 요소의 기하학적 속성을 다시 계산하고 페이지를 다시 레이아웃해야 합니다. 이 프로세스를 리플로우라고 합니다.

다시 그리기 및 리플로우는 특정 성능 소모를 유발하며 자주 발생하면 페이지 성능에 심각한 영향을 미칩니다.

2. 다시 그리기 및 리플로우를 방지하는 팁과 방법

  1. 스타일 대신 클래스 사용: 요소의 스타일을 설정할 때 요소의 스타일 속성을 직접 조작하는 대신 클래스를 사용하여 요소의 스타일을 수정해 보세요. . 스타일 속성을 수정하면 리플로우 작업이 발생하므로 클래스를 사용하여 스타일을 수정하면 다시 그리기만 트리거됩니다.

샘플 코드:

// 不推荐的写法
element.style.width = '200px';
element.style.height = '100px';
element.style.backgroundColor = 'red';

// 推荐的写法
element.classList.add('custom-style');
  1. DocumentFragment 사용: 페이지에 많은 수의 DOM 요소를 추가할 때 먼저 이러한 요소를 문서 조각에 추가한 다음 문서를 한 번에 삽입할 수 있습니다. 리플로우.

샘플 코드:

const fragment = document.createDocumentFragment();

for (let i = 0; i < 1000; i++) {
  const div = document.createElement('div');
  div.innerHTML = 'Element ' + i;
  fragment.appendChild(div);
}

document.getElementById('container').appendChild(fragment);
  1. 상단/왼쪽 대신 변환 사용: 요소의 위치를 ​​변경해야 하는 경우 상단 및 왼쪽 속성을 직접 수정하는 대신 변환 속성을 사용해 보세요. 변환을 사용하면 리플로우 작업이 트리거되지 않으므로 top 및 left 속성을 직접 수정하면 브라우저가 요소의 레이아웃을 다시 계산하게 됩니다.

샘플 코드:

// 不推荐的写法
element.style.top = '100px';
element.style.left = '200px';

// 推荐的写法
element.style.transform = 'translate(200px, 100px)';
  1. 가상 DOM(가상 DOM) 사용: 가상 DOM은 가상 DOM과 실제 DOM의 차이를 비교하여 페이지 다시 그리기 및 리플로우 작업을 최소화하는 메모리 내 데이터 구조입니다. 일부 인기 있는 프런트엔드 프레임워크(예: React, Vue)를 사용하면 자동으로 가상 DOM을 운영하는 데 도움이 됩니다.

샘플 코드:

// 使用 React 创建虚拟 DOM
const element = <div>Hello, World!</div>;

// 将虚拟 DOM 导入真实 DOM
ReactDOM.render(element, document.getElementById('root'));

요약:

다시 그리기 및 리플로우는 프런트 엔드 성능 최적화에 특별한 주의가 필요한 문제입니다. 스타일 대신 클래스를 사용하고, 문서 조각을 사용하고, 위쪽/왼쪽 대신 변환을 사용하고, 가상 DOM과 기타 기술 및 방법을 사용함으로써 페이지 다시 그리기 및 리플로우 작업을 크게 줄이고 페이지 성능을 향상시킬 수 있습니다. 실제 개발 시 개발자는 항상 페이지 성능에 주의를 기울이고, 최적화를 위해 위의 팁과 방법을 따르는 것이 좋습니다.

위 내용은 프런트엔드 성능 최적화: 다시 그리기 및 리플로우를 줄이기 위한 팁 및 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
두 개의 이미지와 API : 제품을 다시 칠하는 데 필요한 모든 것두 개의 이미지와 API : 제품을 다시 칠하는 데 필요한 모든 것Apr 15, 2025 am 11:27 AM

최근에 제품 이미지의 색상을 동적으로 업데이트하는 솔루션을 찾았습니다. 따라서 제품 중 하나만 사용하여 다른 방식으로 색칠 할 수 있습니다.

주간 플랫폼 뉴스 : 제 3 자 코드, 수동 혼합 콘텐츠, 가장 느린 연결이있는 국가의 영향주간 플랫폼 뉴스 : 제 3 자 코드, 수동 혼합 콘텐츠, 가장 느린 연결이있는 국가의 영향Apr 15, 2025 am 11:19 AM

이번 주에 라운드 업, Lighthouse는 타사 스크립트에 빛을 비추고 불안한 자원이 안전한 사이트에서 차단되고 많은 국가 연결 속도가 차단됩니다.

직접 비자 스크립트 기반 분석을 호스팅하는 옵션직접 비자 스크립트 기반 분석을 호스팅하는 옵션Apr 15, 2025 am 11:09 AM

사이트에서 방문자 및 사용 데이터를 추적하는 데 도움이되는 분석 플랫폼이 많이 있습니다. 아마도 널리 사용되는 Google 웹 로그 분석

그것은 모두 헤드에있는 모든 것 : React Helmet과 함께 React 전원 사이트의 문서 헤드 관리그것은 모두 헤드에있는 모든 것 : React Helmet과 함께 React 전원 사이트의 문서 헤드 관리Apr 15, 2025 am 11:01 AM

문서 헤드는 웹 사이트에서 가장 화려한 부분이 아닐 수도 있지만 웹 사이트의 성공에 중요합니다.

JavaScript의 Super () 란 무엇입니까?JavaScript의 Super () 란 무엇입니까?Apr 15, 2025 am 10:59 AM

Super ()?를 호출하는 JavaScript를 볼 때 어떤 일이 발생 하는가. 아동 클래스에서는 Super ()를 사용하여 부모의 생성자와 Super를 호출합니다. 그것의 접근

다양한 유형의 기본 JavaScript 팝업 비교다양한 유형의 기본 JavaScript 팝업 비교Apr 15, 2025 am 10:48 AM

JavaScript에는 사용자 상호 작용을위한 특수 UI를 표시하는 다양한 내장 팝업 API가 있습니다. 뛰어나게:

액세스 가능한 웹 사이트를 구축하기가 어려운 이유는 무엇입니까?액세스 가능한 웹 사이트를 구축하기가 어려운 이유는 무엇입니까?Apr 15, 2025 am 10:45 AM

나는 다른 날에 많은 회사들이 액세스 가능한 웹 사이트를 만드는 데 어려움을 겪고있는 이유에 대해 다른 프론트 엔드 사람들과 대화를 나누고있었습니다. 액세스 가능한 웹 사이트가 왜 그렇게 어려운가

'숨겨진'속성은 눈에 띄게 약합니다'숨겨진'속성은 눈에 띄게 약합니다Apr 15, 2025 am 10:43 AM

당신이해야 할 일을 정확하게 수행하는 HTML 속성이 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음