자바스크립트 Lazy Loading을 이용한 웹 페이지의 메모리 사용량 절감

웹 페이지의 성능 개선은 사용자 경험 향상에 중요한 역할을 합니다. 웹 페이지를 로딩할 때, 모든 이미지, 스크립트, 스타일시트 등을 한 번에 가져오면 초기 로딩 시간이 길어지고 메모리 사용량이 증가할 수 있습니다. 이로 인해 웹 페이지가 느리게 불러오거나, 사용자가 스크롤할 때 지연이 발생할 수 있습니다.

Lazy Loading은 이러한 문제를 해결하는 방법 중 하나입니다. Lazy Loading은 필요한 컨텐츠만 로딩하고, 나머지 컨텐츠는 사용자가 스크롤하여 화면에 나타날 때 로딩되도록 하는 기술입니다. 이를 통해 초기 로딩 시간과 메모리 사용량을 줄일 수 있습니다.

Lazy Loading의 작동 원리

Lazy Loading은 주로 이미지 리소스에 적용되며, 웹 페이지에서 이미지가 뷰포트에 나타날 때까지 해당 이미지를 로딩하지 않습니다. 사용자가 스크롤하여 이미지가 뷰포트에 들어오면, 스크롤 이벤트를 감지하여 해당 이미지를 동적으로 로딩합니다.

이를 구현하기 위해서는 자바스크립트를 사용해야 합니다. 먼저, 이미지 태그의 src 속성을 텅 빈 값("")으로 설정하고, data-src 속성에 실제 이미지 경로를 저장합니다. 그리고 스크롤 이벤트를 감지하여 뷰포트에 들어온 이미지를 동적으로 로딩하면 됩니다.

아래는 Lazy Loading을 구현한 자바스크립트 코드의 예시입니다.

window.addEventListener('scroll', function() {
  var images = document.querySelectorAll('img[data-src]');

  for (var i = 0; i < images.length; i++) {
    var image = images[i];
  
    if (isElementInViewport(image)) {
      image.src = image.getAttribute('data-src');
      image.removeAttribute('data-src');
    }
  }
});

function isElementInViewport(element) {
  var rect = element.getBoundingClientRect();
  
  return (
    rect.top >= 0 &&
    rect.left >= 0 &&
    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
    rect.right <= (window.innerWidth || document.documentElement.clientWidth)
  );
}

위의 코드는 scroll 이벤트를 감지하여 뷰포트에 들어온 이미지를 차례로 확인하고, data-src 속성을 src 속성으로 변경하여 이미지를 로딩하는 내용을 담고 있습니다.

Lazy Loading의 장점

  1. 초기 로딩 시간 단축: Lazy Loading을 사용하면 처음에 필요한 컨텐츠만 로딩하므로 초기 로딩 시간을 단축시킬 수 있습니다.
  2. 메모리 사용량 감소: 모든 컨텐츠를 한 번에 로딩하지 않으므로 메모리 사용량을 줄일 수 있습니다.
  3. 사용자 경험 향상: 스크롤할 때 지연 없이 컨텐츠가 로딩되어 사용자 경험을 향상시킬 수 있습니다.

결론

Lazy Loading은 웹 페이지의 성능을 개선하고 사용자 경험을 향상시킬 수 있는 중요한 기술입니다. 이미지를 포함한 컨텐츠의 로딩을 지연시킴으로써 초기 로딩 시간을 단축하고 메모리 사용량을 줄일 수 있습니다. 따라서, Lazy Loading을 적용하여 웹 페이지의 성능을 향상시키는 것을 고려해보세요.

참고 자료:

  1. Lazy Loading Images and Video
  2. How to Lazy Load Images in JavaScript