티스토리 뷰

<img src="photo.jpg" loading="lazy" width="1200" height="800" alt="반응형 이미지">

● 이미지 지연 로딩(Lazy Loading) 및 캐시 기술을 적용

이미지 지연 로딩(Lazy Loading)과 캐시 기술을 적용하면 초기 페이지 로딩 속도가 빨라지고 서버 부하가 줄어듭니다. 사용자가 화면을 스크롤할 때 필요한 이미지만 불러오고, 한 번 받은 이미지는 저장해 두어 다시 요청하지 않기 때문입니다.

 

이미지 지연 로딩 (Lazy Loading)

  • 개념: 화면에 보이는 영역(뷰포트)에 들어올 때만 이미지 로드를 진행합니다.
  • HTML 적용: <img src="image.jpg" loading="lazy" alt="예시 이미지"> 속성을 추가합니다.
  • 효과: 첫 페이지 로딩 시 불필요한 네트워크 요청을 막아 속도가 빨라집니다.

이미지 캐시 (Caching) 기술

  • 브라우저 캐시: Cache-Control HTTP 헤더를 설정해 한 번 불러온 이미지를 사용자 기기에 저장합니다.
  • CDN 캐시: 전 세계 서버에 이미지를 저장해 사용자와 가까운 곳에서 빠르게 전달합니다.
  • 효과: 재방문 시 서버를 거치지 않고 바로 불러와 데이터 사용량이 줄어듭니다.

● 이기술 적용 주체는 누구인가요? 프로그래머인가요? 퍼플리셔인가요?

이미지 지연 로딩과 캐시 기술의 적용 주체는 프로그래머(개발자)와 웹 퍼블리셔 모두 해당됩니다. 어떤 기술이냐에 따라 주 역할이 나뉩니다.
기술 종류주된 작업자 상세 역할

 

지연 로딩 (Lazy Loading) 웹 퍼블리셔 & 프로그래머 • 퍼블리셔: HTML 마크업 시 <img loading="lazy"> 속성을 직접 추가하거나 기본 스크립트를 적용합니다.
• 프로그래머: React, Vue, Next.js 등 개발 프레임워크 내에서 컴포넌트 단위로 지연 로딩 라이브러리를 연동하고 제어합니다.
이미지 캐시 (Caching) 프로그래머 (백엔드/인프라) • 프로그래머: 서버(Node.js, Spring 등)나 클라우드 설정(AWS, CDN 등)에서 Cache-Control 헤더를 설정하여 브라우저에 캐시 명령을 내립니다.
요약하자면
  • 화면 구조를 잡고 UI를 배치하는 웹 퍼블리셔는 지연 로딩(Lazy Loading)의 태그 속성 정의 및 기초 스크립트 적용을 담당합니다.
  • 데이터 흐름과 서버 시스템을 다루는 프로그래머는 성능 최적화를 위한 캐시(Cache) 설정 및 대규모 데이터 로딩 로직을 담당합니다.
단, 최근 트렌드(Next.js 등)에서는 퍼블리싱 영역과 프론트엔드 개발 영역이 많이 겹쳐 있어 프론트엔드 프로그래머가 두 가지를 모두 처리하는 경우도 많습니다.

● 퍼블리셔가 이미지가 삽입될때 loading="lazy" 요 속성만 넣으면 되는 건가요?

네, 맞습니다! 단순히 HTML 마크업을 하는 퍼블리셔 입장에서는 <img loading="lazy"> 속성만 추가하는 것이 가장 기본적이고 올바른 방법입니다.
브라우저가 이 속성을 인식하면, 사용자가 스크롤을 내려 이미지가 화면(뷰포트)에 가까워질 때 자동으로 이미지를 다운로드합니다.
하지만 실제 실무에서 더 완성도 높은 퍼블리싱을 하려면 아래의 3가지 포인트를 함께 챙겨주는 것이 좋습니다.
⚠️ 퍼블리셔가 함께 챙겨야 할 3가지 체크리스트
1. width와 height 속성 반드시 지정하기
  • 이유: 크기가 지정되지 않으면 브라우저가 이미지의 원래 크기를 알 수 없어, 이미지가 로드될 때 화면이 덜컥거리는 레이아웃 시프트(CLS) 현상이 일어납니다. 지연 로딩을 쓸 때는 특히 필수입니다.
  • 올바른 예: <img src="photo.jpg" loading="lazy" width="600" height="400" alt="설명">
2. 첫 화면(최상단) 이미지에는 사용하지 않기
  • 이유: 웹페이지를 열자마자 바로 보여야 하는 메인 배너나 로고 같은 이미지는 지연 로딩을 걸면 오히려 화면에 나타나는 속도가 느려집니다.
  • 해결법: 첫 화면에 보이는 이미지에는 loading="lazy"를 빼거나, 오히려 먼저 로드하라는 의미로 fetchpriority="high" 속성을 넣어주는 것이 좋습니다.
3. 오래된 브라우저(IE 등) 지원 여부 확인
  • Modern 브라우저(Chrome, Safari, Edge, Firefox 등)는 이 속성을 완벽하게 지원합니다.
  • 다만, 프로젝트 타깃이 아주 오래된 구형 브라우저까지 포함한다면 태그 속성만으로는 작동하지 않아 IntersectionObserver라는 자바스크립트 라이브러리(예: vanilla-lazyload 등)의 도움을 받아야 할 수도 있습니다. (최근 웹 표준 환경에서는 거의 태그만으로 해결합니다.)
💡 결론
일반적인 현대 웹 개발 환경이라면 loading="lazy" 속성을 넣고, 가로/세로(width/height) 크기를 명시해 주는 것만으로 퍼블리셔의 역할은 충분합니다!

 

● 반응형이라면 가로 세로를 %로 구현 하잖아요. 이건 상관없나요?

반응형 웹에서 width와 height 속성에 % 단위를 직접 넣는 것은 불가능하거나 올바른 방법이 아닙니다. HTML의 width, height 속성에는 오직 단위 없는 숫자(픽셀 값)만 넣어야 웹 표준에 맞기 때문입니다.
하지만 반응형 레이아웃에서도 레이아웃 시프트(화면 덜컥거림)를 막으면서 loading="lazy"를 완벽하게 사용하려면 아래 2가지 방법 중 하나를 선택하셔야 합니다.

💡 반응형 이미지 올바른 구현 방법 2가지
방법 1: HTML에는 원본 비율(숫자)을 넣고, CSS로 % 조절하기 (가장 추천)
HTML에는 이미지의 원본 크기(비율 제공용)를 숫자로만 적고, 실제 화면 크기에 맞춰 줄어드는 반응형 처리는 CSS로 제어하는 방법입니다. 최근 모바일/반응형 웹을 만들 때 가장 널리 쓰이는 표준 방식입니다.
  • HTML: width, height에 단위 없이 원본 해상도 숫자만 입력
<img src="photo.jpg" loading="lazy" width="1200" height="800" alt="반응형 이미지">

 

CSS: 스타일시트에서 가로를 %로, 세로는 자동 조절되도록 선언

img {
  width: 100%;       /* 부모 요소에 맞춰 %로 늘어남 */
  height: auto;      /* 원본 비율에 맞춰 세로가 자동으로 계산됨 */
  max-width: 100%;   /* 원본보다 더 커져서 깨지는 것 방지 */
}

 

방법 2: 최신 CSS 속성 aspect-ratio 사용하기
만약 HTML 구조를 깔끔하게 유지하고 CSS 안에서 비율까지 한 번에 제어하고 싶다면 최신 CSS 속성인 aspect-ratio(종횡비)를 사용하면 편리합니다.
 

HTML

<img src="photo.jpg" loading="lazy" class="responsive-img" alt="반응형 이미지">

 

CSS

.responsive-img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9; /* 이미지의 원본 가로세로 비율을 CSS에 직접 명시 */
}

 

📌 퍼블리셔 요약
반응형이라고 해서 HTML 태그 안에 width="100%" 형태로 적으시면 안 됩니다.
  1. HTML에는 원본 이미지의 크기를 숫자만 적어줍니다 (width="1200" height="800").
  2. CSS에서 width: 100%; height: auto; 설정을 주어 반응형으로 만듭니다.
이렇게 구성하시면 반응형 화면에서도 지연 로딩(loading="lazy")이 완벽하고 부드럽게 작동합니다.

 

※ 해당 내용은 Google Gmini에서 작성되었습니다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/10   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함