"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Intersection Observer로 웹사이트 성능 향상

Intersection Observer로 웹사이트 성능 향상

2024-07-30에 게시됨
검색:243

Enhancing Website Performance with Intersection Observer

소개

더 빠르고 효율적인 웹 경험을 추구하기 위해 개발자들은 성능을 최적화할 수 있는 새로운 방법을 지속적으로 모색하고 있습니다. 웹 개발자의 무기고에 있는 강력한 도구 중 하나는 Intersection Observer API입니다. 이 API를 사용하면 대상 요소의 가시성 변화를 관찰할 수 있으므로 지연 로딩 및 지연된 콘텐츠 로딩과 같은 고급 전략이 가능해집니다. 이 블로그에서는 Intersection Observer API를 사용하여 웹사이트 성능을 향상시키는 방법을 살펴보겠습니다.

교차로 관찰자란 무엇입니까?

Intersection Observer API는 대상 요소와 상위 요소 또는 최상위 문서의 뷰포트의 교차점에서 변경 사항을 비동기적으로 관찰하는 방법을 제공합니다. 이는 사용자가 페이지를 아래로 스크롤할 때 이미지나 기타 콘텐츠를 지연 로딩하는 데 특히 유용할 수 있습니다.

성능 개선을 위한 주요 사용 사례

  1. 이미지 및 Iframe 지연 로드: 이미지와 iframe이 뷰포트에 들어가려고 할 때만 로드하여 초기 로드 시간을 줄입니다.
  2. 오프스크린 콘텐츠 로딩 지연: 광고, 동영상, 무거운 스크립트 등의 콘텐츠가 표시될 때까지 로딩을 연기합니다.
  3. 무한 스크롤: 사용자가 페이지를 아래로 스크롤하면 더 많은 콘텐츠를 로드합니다.
  4. 분석 추적: 사용자 참여 분석을 위해 요소가 언제 표시되는지 추적합니다.

기본 사용법

Intersection Observer API의 기본 구현을 살펴보겠습니다.

  1. 교차로 관찰자 생성

먼저 IntersectionObserver의 인스턴스를 만듭니다.

let observer = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      // Perform actions when the element is visible
      entry.target.src = entry.target.dataset.src;
      observer.unobserve(entry.target); // Stop observing after loading
    }
  });
}, {
  root: null, // relative to document viewport
  rootMargin: '0px', // margin around root
  threshold: 0.1 // visible amount of item shown in relation to root
});
  1. 관찰 대상 요소

관찰하려는 요소를 선택하고 관찰을 시작하세요.

document.querySelectorAll('img[data-src]').forEach(img => {
  observer.observe(img);
});
  1. 지연 로딩을 위한 HTML 구조

데이터 속성을 사용하여 HTML 구조가 지연 로딩을 지원하는지 확인하세요.

Lazy Loaded Image

고급 구성

더 세밀하게 제어하려면 루트 여백과 임계값 옵션을 조정할 수 있습니다.

  1. 루트 여백: 콘텐츠가 뷰포트에 들어가기 약간 전에 미리 로드합니다.
rootMargin: '100px' // preload 100px before entering viewport
  1. 임계값: 콜백을 트리거하기 전에 표시되어야 하는 요소의 양을 결정합니다.
threshold: [0.25, 0.5, 0.75, 1] // trigger at 25%, 50%, 75%, and 100% visibility

실제 예: 이미지 지연 로딩

이미지 지연 로드에 대한 전체 예는 다음과 같습니다.

  1. 자바스크립트 코드
document.addEventListener("DOMContentLoaded", function() {
  let lazyImages = document.querySelectorAll("img.lazy");

  let imageObserver = new IntersectionObserver((entries, observer) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        let img = entry.target;
        img.src = img.dataset.src;
        img.classList.remove("lazy");
        observer.unobserve(img);
      }
    });
  });

  lazyImages.forEach(image => {
    imageObserver.observe(image);
  });
});
  1. HTML 구조
Lazy Loaded Image

이익

  1. 초기 로드 시간 단축: 뷰포트 내부 또는 근처에 있는 이미지와 콘텐츠만 로드하여 초기 로드 시간이 단축됩니다.
  2. 향상된 스크롤 성능: 화면 밖의 콘텐츠 로드를 연기하면 스크롤이 더 부드러워질 수 있습니다.
  3. 더 나은 사용자 경험: 사용자는 곧 보려는 콘텐츠만 다운로드하므로 응답성이 더 뛰어난 경험을 얻을 수 있습니다.

결론

Intersection Observer API를 구현하면 웹사이트의 성능과 사용자 경험을 크게 향상시킬 수 있습니다. 이미지 로딩이 느리거나, 무거운 스크립트 로딩을 연기하거나, 무한 스크롤을 구현하는 경우에도 이 API는 콘텐츠 가시성을 관리하는 강력하고 효율적인 방법을 제공합니다. 지금부터 Intersection Observer를 사용하여 웹사이트 성능의 차이를 확인하세요!

릴리스 선언문 이 글은 https://dev.to/koolkamalkishor/enhancing-website-performance-with-intersection-observer-f89?1에서 복제되었습니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3