웹 성능 최적화는 현대 웹 개발에서 가장 중요한 과제 중 하나입니다. 특히 이미지가 많은 웹사이트의 경우 이미지를 한번에 로드하여 페이지 로딩 시간을 늘리고 좋지 않은 사용자 경험을 제공합니다. 페이지 로딩 시간을 단축하고 사용자 경험을 개선하는 것이 매우 중요합니다. 이를 위한 효과적인 기법 중 하나가 바로 '이미지 지연 로딩(Image Lazy Loading)'입니다.
이번에는 이미지 지연 로딩의 개념, 구현 방법, 그리고 이를 통해 얻을 수 있는 이점에 대해 자세히 알아보겠습니다.
이미지 지연 로딩은 웹페이지의 초기 로딩 시 모든 이미지를 한 번에 불러오지 않고, 사용자가 viewport에 이미지가 들어올 때 해당 이미지를 로드하는 기술입니다. 이 기법을 통해 초기 페이지 로딩 시간을 크게 단축하고, 불필요한 데이터 사용을 줄일 수 있습니다.
HTML과 JavaScript를 사용하여 Lazy Loading을 구현할 수 있습니다.
HTML5의 img 태그에서 loading 속성을 사용하면 Lazy Loading을 쉽게 구현할 수 있습니다.
<img src="image.webp" alt="image" loading="lazy">
img 태그에서 제공하는 loading 속성에 lazy 값을 설정해주면 뷰포트 일정 거리 안으로 들어오면 이미지를 불러옵니다.
현재 대부분의 최신 브라우저에서 loading="lazy" 속성을 지원하지만, 일부 구형 브라우저에서는 지원하지 않을 수 있습니다.
JavaScript에서 제공하는 Intersection Observer API를 활용하여 Lazy Loading을 구현할 수 있습니다. Intersection Observer API는 요소가 viewport안에 들어올때 이벤트를 감지해 이미지 로드를 시작 할 수 있도록 도와줍니다.
<img class="lazy" data-src="image.jpg" alt="Lazy loaded image">
const lazyLoadImages = () => {
const imageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
const image = entry.target;
image.src = image.dataset.src;
image.classList.remove("lazy");
observer.unobserve(image);
}
});
});
const lazyImages = document.querySelectorAll('img.lazy');
lazyImages.forEach(img => imageObserver.observe(img));
};
// DOM이 로드된 후 실행
document.addEventListener('DOMContentLoaded', lazyLoadImages);
Image Lazy Loading은 웹페이지 성능 향상시키지만 잘못 적용된다면 좋지 못한 사용자 경험을 제공할 수 있습니다. Lazy Loading 적용시 주의해야 할 사항은 다음과 같습니다.
초기 컨텐츠 가시성 보장
사용자 경험 고려
SEO 및 검색엔진 친화성
성능 테스트
성능 최적화에 대해 공부하면서 Image lazy Loading에 대해 새롭게 알게되었습니다. 다양한 기업들이 Image Lazy Loading을 적용하고 성능 개선한 사례도 찾아 볼 수 있습니다. 이처럼 Image Lazy Loading은 웹사이트에서 필수적인 성능 최적화 기법 중 하나로 자리 잡았습니다.