이미지 뿐만 아니라 스크립트 및 스타일시트까지 로딩하는 Lazy Loading

Lazy loading은 웹 페이지의 성능을 향상시키기 위한 기술로, 페이지가 로드될 때 필요한 이미지, 스크립트 및 스타일시트를 실제로 필요한 시점에 동적으로 로드하는 것을 의미합니다. 이는 초기 로딩 시간을 줄이고 페이지를 더 빠르게 표시할 수 있도록 도와줍니다. 이번 글에서는 이미지 뿐만 아니라 스크립트 및 스타일시트까지 로딩하는 Lazy loading 기법에 대해 알아보겠습니다.

이미지 Lazy Loading

이미지 Lazy loading은 사용자가 스크롤할 때 이미지를 로드하는 기술입니다. 사용자가 페이지를 스크롤하면서 이미지가 화면에 보이기 시작할 때, 그때서야 해당 이미지를 로드하는 방식입니다. 이를 통해 초기 페이지 로딩 시간을 줄이고 데이터 사용량을 절약할 수 있습니다. 대표적인 이미지 Lazy loading 라이브러리로는 “Layzr.js”와 “Lozad.js”가 있습니다.

// Layzr.js를 사용한 이미지 Lazy loading 예제
var layzr = new Layzr({
    // 로드할 이미지를 감싸는 컨테이너 지정
    selector: '.lazy',
    // 로드할 이미지의 기본 이미지 지정
    attr: 'data-src',
    // 로드할 이미지가 보이는 영역 범위 지정
    threshold: 0,
    // 로드되는 이미지를 fade 효과로 표시
    transition: 'fade',
    // 로드되는 이미지의 크기를 재조정
    retina: true
});

스크립트 및 스타일시트 Lazy Loading

이미지 뿐만 아니라 스크립트 및 스타일시트까지 Lazy loading할 수 있는 방법도 있습니다. 이를 사용하면 페이지 로딩 속도를 더욱 개선할 수 있습니다. 스크립트 및 스타일시트 Lazy loading은 대부분의 경우 JavaScript로 구현됩니다. 일부 요소가 화면에 보이기 시작하면, 해당 요소에 대한 스크립트 및 스타일시트를 동적으로 로드하는 방식입니다.

// Intersection Observer를 사용한 스크립트 및 스타일시트 Lazy loading 예제
const options = {
    root: null, // 뷰포트 기준으로 요소를 관찰
    rootMargin: '0px', // 뷰포트와 검사 대상 사이의 여백
    threshold: 1.0 // 요소의 100%가 노출되면 콜백 함수 호출
};

const handleIntersection = (entries, observer) => {
    entries.forEach(entry => {
        if (entry.isIntersecting) {
            // 스크립트 또는 스타일시트 로드
            const script = document.createElement('script');
            script.src = 'your-script.js';
            document.body.appendChild(script);

            // 필요한 경우 스타일시트도 로드 가능
            const link = document.createElement('link');
            link.rel = 'stylesheet';
            link.href = 'your-stylesheet.css';
            document.head.appendChild(link);

            // 관찰 중지
            observer.unobserve(entry.target);
        }
    });
};

const observer = new IntersectionObserver(handleIntersection, options);

// 관찰하려는 요소 선택
const target = document.querySelector('.lazy-script-stylesheet');
observer.observe(target);

결론

이미지, 스크립트, 스타일시트까지 로딩하는 Lazy loading은 웹 페이지 성능을 향상시키는 효과적인 방법입니다. 초기 로딩 시간을 줄이고 데이터 사용량을 절약함으로써 사용자 경험을 향상시킬 수 있습니다. 이미지 Lazy loading을 위해 Layzr.js와 Lozad.js 같은 라이브러리를 사용할 수 있으며, 스크립트 및 스타일시트 Lazy loading을 위해서는 Intersection Observer API를 사용할 수 있습니다.

#WebDevelopment #LazyLoading