Lazy Loading은 소프트웨어 디자인 패턴 중 하나로, 필요한 시점까지 객체나 데이터를 로드하지 않고, 실제로 사용될 때 로드하는 방법을 의미합니다. 이 패턴은 메모리 사용을 최적화하고, 애플리케이션의 초기 로딩 시간을 단축하기 위해 사용됩니다.
웹 페이지가 로드될 때, 모든 이미지를 한 번에 로드하는 대신, 사용자가 화면을 스크롤할 때 해당 영역에 들어오는 이미지만 로드하는 방식입니다. 이를 통해 초기 로딩 시간을 단축하고, 사용자의 대역폭을 절약할 수 있습니다.
예시: HTML의 loading 속성을 사용한 이미지의 Lazy Loading
<img src="image1.jpg" loading="lazy" alt="Example Image 1">
<img src="image2.jpg" loading="lazy" alt="Example Image 2">
ORM(Object-Relational Mapping) 시스템에서 Lazy Loading은 관계형 데이터베이스의 연관된 데이터를 필요한 시점에만 로드하도록 설정하는 방식입니다. 예를 들어, User 객체가 여러 Post 객체와 연관되어 있을 때, 사용자가 특정 User 객체의 게시물에 접근하기 전까지 Post 객체들을 로드하지 않습니다.
예시: Django ORM에서의 Lazy Loading
# 이 쿼리는 실제로 데이터베이스에서 posts를 즉시 가져오지 않습니다.
user = User.objects.get(id=1)
# posts에 접근하는 순간, 관련된 데이터를 데이터베이스에서 가져옵니다.
posts = user.posts.all()
JavaScript 애플리케이션에서 Lazy Loading을 사용하면, 초기 로드 시점에 모든 모듈을 로드하지 않고, 특정 기능이 필요한 시점에 모듈을 로드하여 사용할 수 있습니다. 이를 통해 애플리케이션의 초기 로딩 성능을 향상시킬 수 있습니다.
예시: Webpack에서의 Lazy Loading
// 버튼 클릭 시 모듈을 동적으로 가져옴
document.getElementById('load-button').addEventListener('click', () => {
import('./module').then((module) => {
module.someFunction();
});
});