자바스크립트 Lazy Loading을 통한 웹 폰트 최적화

웹 폰트는 웹 페이지의 디자인과 가독성을 향상시키는 데 도움이되는 훌륭한 자원입니다. 하지만 대용량의 웹 폰트 파일은 웹 페이지의 로딩 속도를 느리게하고 사용자 경험을 저하시킬 수 있습니다. 이러한 문제를 해결하기 위해 자바스크립트 Lazy Loading을 사용하여 웹 폰트를 최적화하는 방법에 대해 알아보겠습니다.

Lazy Loading의 개념

Lazy Loading은 필요한 리소스를 필요한 시점에 로딩하는 기법입니다. 이는 웹 페이지 로딩 시간을 단축시켜 성능을 향상시킬 수 있는 효과를 가져옵니다. Lazy Loading은 사용자가 웹 페이지를 스크롤하거나 특정 이벤트가 발생할 때 리소스를 로딩할 수 있도록 합니다.

웹 폰트의 Lazy Loading

웹 폰트의 Lazy Loading은 폰트 리소스를 초기 로딩에 포함하지 않고, 사용자가 실제로 페이지에서 폰트를 사용해야 할 때 폰트를 동적으로 로딩하는 방식입니다. 이를 통해 초기 페이지 로딩 시간을 단축하고 사용자 경험을 향상시킬 수 있습니다.

<script>
function loadFont() {
  var font = new FontFaceObserver('Noto Sans KR');

  font.load().then(function() {
    document.body.classList.add('font-loaded');
  }).catch(function() {
    console.error('폰트 로딩에 실패했습니다.');
  });
}

if ('fonts' in document) {
  loadFont();
} else {
  document.addEventListener('DOMContentLoaded', loadFont);
}
</script>

위의 코드는 Lazy Loading을 사용하여 웹 폰트를 로딩하는 예시입니다. FontFaceObserver 객체를 사용하여 폰트가 로딩될 때까지 JavaScript 프로미스(Promise)를 사용하여 로딩을 기다린 다음, 폰트 로딩이 성공하면 font-loaded 클래스를 body 요소에 추가하여 폰트 스타일을 적용합니다. 폰트 로딩에 실패한 경우, 콘솔에 에러 메시지를 출력합니다.

웹 폰트 최적화의 장점

  1. 초기 페이지 로딩 속도 개선: Lazy Loading을 통해 웹 폰트를 필요한 시점에 동적으로 로딩하므로, 초기 페이지 로딩 속도를 개선할 수 있습니다.
  2. 사용자 경험 향상: 웹 폰트가 로딩되기 전까지는 기본 폰트가 노출되므로 사용자는 페이지에서 폰트 로딩을 기다리지 않아도 됩니다.
  3. 데이터 사용량 절감: 필요한 폰트만 로딩하므로 불필요한 폰트 리소스를 로딩하지 않아 데이터 사용을 줄일 수 있습니다.

요약

자바스크립트 Lazy Loading을 통해 웹 폰트를 최적화하는 것은 웹 페이지의 성능을 향상시키고 사용자 경험을 개선하는 중요한 요소입니다. 웹 폰트의 초기 로딩 시간을 단축하고 사용자가 웹 페이지에서 폰트를 실제로 사용해야만 로딩되도록 하는 Lazy Loading 기법은 매우 유용합니다. 이를 통해 웹 페이지의 디자인과 가독성을 향상시키며, 사용자에게 빠른 로딩 속도를 제공할 수 있습니다.

#웹폰트 #LazyLoading