[angular] 렌더링 성능 향상

Angular 애플리케이션의 성능을 향상시키는 것은 매우 중요합니다. 특히 렌더링 성능을 최적화하는 것은 사용자 경험을 향상시키고 애플리케이션의 성능을 향상시킬 수 있습니다. 이로 인해 사용자는 애플리케이션이 더 빠르게 반응하고 더 부드럽게 작동하는 것을 경험할 수 있습니다.

Change Detection 최적화

Angular에서 가장 중요한 성능 최적화는 Change Detection 입니다. 변경 검출은 Angular가 모든 컴포넌트에 대해 DOM을 다시 렌더링해야 하는지 여부를 결정하는 프로세스입니다. 많은 변경 검출을 수행하면 애플리케이션 성능에 부정적인 영향을 미칠 수 있습니다.

Change Detection Strategy 사용

ChangeDetectionStrategy를 효과적으로 활용하여 변경 검출을 최적화할 수 있습니다. OnPush 전략을 사용하여 부모 컴포넌트에서 자식 컴포넌트로의 입력 속성 변경 시에만 변경 검출을 수행하여 성능을 향상시킬 수 있습니다.

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class ExampleComponent {
  // ...
}

Immutable Data 사용

변경 검출을 최적화하는 또 다른 방법은 Immutable 데이터 구조를 사용하는 것입니다. Immutable 데이터 구조를 사용하면 Angular가 변경된지 여부를 빠르고 쉽게 판단할 수 있습니다.

Lazy Loading

크고 복잡한 애플리케이션의 경우, Lazy Loading을 사용하여 초기 로딩 시간을 줄이고 성능을 향상시킬 수 있습니다. Lazy Loading은 필요한 모듈 및 컴포넌트를 필요할 때 동적으로 로드하여 초기 페이지 로딩 시간을 최적화합니다.

const routes: Routes = [
  { path: 'dashboard', component: DashboardComponent },
  { path: 'admin', loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule) },
  // ...
];

서비스 워커 등록

서비스 워커를 등록하여 애플리케이션의 성능을 향상시킬 수 있습니다. 서비스 워커는 애플리케이션의 정적 에셋을 캐싱하고 오프라인에서도 작동할 수 있게 합니다.

if ('serviceWorker' in navigator) {
  window.addEventListener('load', () => {
    navigator.serviceWorker.register('/ngsw-worker.js');
  });
}

렌더링 성능을 향상시키면 사용자는 애플리케이션이 더 빠르고 반응성있게 동작하고, 더 좋은 사용자 경험을 얻을 수 있습니다. 애플리케이션의 성능을 최적화하는 것은 항상 중요한 과제이며, Angular에서는 위에 언급한 방법을 통해 성능을 향상시킬 수 있습니다.

참고 자료