STATUS IS UP웹사이트 최적화 위키
18가속화
성능 및 전달 / 가속화

srcset과 sizes를 사용한 반응형 이미지

브라우저가 모든 방문자에게 과도하게 큰 원본을 전송하는 대신 실제 레이아웃 슬롯에 맞는 이미지를 선택하도록 돕습니다.

srcset과 sizes를 사용한 반응형 이미지 — 시각 가이드
읽기
8 분
출처
6
재검증
2027-03-27
검토됨
웹 성능 및 접근성 검토자
간단 답변

결정부터 시작하세요.

동일 이미지가 반응형 레이아웃에서 서로 다른 렌더링 너비로 표시되는 경우 srcset과 sizes를 사용하세요. srcset은 이미지 후보와 그들의 실제 픽셀 너비를 나열하고, sizes는 각 레이아웃 조건에서 이미지 슬롯의 예상 너비를 기술합니다. 브라우저는 그 소스-사이즈 추정치와 디스플레이 밀도, 확대/축소 및 기타 조건을 결합해 적절한 후보를 선택합니다. 따라서 작은 모바일 카드에서는 데스크톱용 원본을 다운로드하지 않아도 되고, 큰 화면이나 고밀도 디스플레이에서는 더 선명한 후보를 선택할 수 있습니다.

컴포넌트의 CSS 레이아웃에서 시작하고 일반적인 디바이스 목록에서 시작하지 마세요. 각 브레이크포인트에서 슬롯을 측정하고, 진실한 후보를 생성하며 sizes가 그 슬롯을 반영하도록 만드세요. 고정 CSS 슬롯에 대해서만 x(밀도) 디스크립터를 사용하세요. 작은 화면에서 다른 크롭이 필요할 때는 단순히 파일만 작게 만드는 대신 picture를 사용하세요. 빈 캐시 새로고침(Empty Cache And Hard Reload)으로 실제 요청을 검증하세요. 이러한 사전적 전송 최적화는 릴리스 전에 불필요한 이미지 전송을 줄이지만 속도, 가용성, 이미지 호스트의 신뢰성을 보장하지는 않습니다.

시각 가이드

작업을 시스템 관점에서 보세요.

개별 전술을 실행하기 전에 이 지도로 문서의 의사결정 간 관계를 파악하세요.

SIU가속화
01올바른 패턴 선택하기
02sizes가 선택에 미치는 영향 이해하기
03실제 레이아웃에서 후보 파생하기
04아트 디렉션에는 picture 사용하기
01

올바른 패턴 선택하기

해상도 전환(resolution switching)은 구성(composition)을 동일하게 유지하면서 여러 파일 너비를 제공하는 패턴입니다. 제품 사진, 기사 삽화, 카드에 보통 사용됩니다. 렌더링 너비가 레이아웃에 따라 바뀌면 480w나 1200w 같은 너비(width) 디스크립터를 사용하세요. 숫자는 폰 목표값이나 CSS 명령이 아니라 파일의 실제 픽셀 너비입니다.

밀도 전환(density switching)은 고밀도 디스플레이에 대해 더 많은 소스 픽셀을 제공하면서 고정된 CSS 슬롯을 서비스합니다. 디스크립터는 1x, 1.5x, 2x 등이며, 예를 들어 항상 160 CSS 픽셀 너비인 로고나 아이콘에 적합합니다. 하나의 srcset에서 너비(w) 디스크립터와 밀도(x) 디스크립터를 혼합하지 마세요.

유동(slots) 슬롯

컴포넌트가 커지거나 작아지면 w 디스크립터와 sizes를 사용하세요.

고정 슬롯

렌더된 CSS 크기가 안정적일 때만 sizes 없이 x 디스크립터를 사용하세요.

02

sizes가 선택에 미치는 영향 이해하기

너비 디스크립터를 사용할 때 브라우저는 이미지를 다운로드하기 전에 sizes를 평가합니다. 각 항목은 선택적 미디어 조건과 길이(length)를 쌍으로 가집니다. 첫 번째로 일치하는 조건이 소스 사이즈를 제공하며, 마지막의 무조건 길이는 폴백입니다. sizes는 선택 힌트(selection hint)이지 CSS 규칙이 아닙니다.

브라우저는 그 소스 사이즈를 후보 너비들과 비교해 유효 밀도(effective density)를 계산한 다음 디스플레이 밀도, 확대/축소, 네트워크 조건 등을 고려할 수 있습니다. 브라우저가 수학적으로 가장 근접한 파일명을 선택할 의무는 없습니다. 정직한 후보와 신뢰할 만한 슬롯 추정치를 제공하세요; 최종 선택은 사용자 에이전트(브라우저)에 달려 있습니다.

순서가 중요함

첫 번째로 일치한 미디어 조건이 승리하므로 그 첫 매치가 올바르도록 리스트 순서를 작성하세요.

100vw 남발을 피하세요

뷰포트 전체로 설명된 1/3 데스크톱 카드는 불필요하게 큰 후보를 트리거할 수 있습니다.

03

실제 레이아웃에서 후보 파생하기

페이지가 아니라 컴포넌트를 목록화(inventory)하세요. 히어로(hero), 편집용 삽화, 제품 갤러리, 검색 썸네일, 푸터 로고는 종종 서로 다른 슬롯 너비를 가집니다. 각 항목에 대해 좁은 상태와 가장 큰 렌더링 너비, 종횡비(aspect ratio), 크롭 동작, 초기 화면 가시성을 기록하세요.

컴포넌트의 의미 있는 슬롯 범위 주변에서 너비를 생성하고, 상세가 필요할 경우 더 큰 옵션을 포함하세요. 거의 동일한 파일들이 빌드와 캐시 복잡도를 증가시킵니다; 극히 작은 파일과 매우 큰 파일만이 타협을 강요합니다. 이미지 변환이 작동한다고 가정하지 말고 생성한 URL을 테스트하세요.

유효한 src 폴백과 제공된 비율과 일치하는 width 및 height 값을 유지하세요. 이들은 공간을 예약하지만 최종 치수를 변경하는 반응형 CSS를 막지 않습니다.

정직한 디스크립터

800w로 선언한 후보는 실제로 800픽셀 너비여야 합니다.

컴포넌트 계약

템플릿과 디자인 변경과 함께 슬롯 및 후보 계획을 유지하세요.

04

아트 디렉션에는 picture 사용하기

아트 디렉션은 단순한 파일 크기 변경이 아니라 구성 변경입니다. 넓은 풍경 사진은 좁은 화면에서 주요 피사체가 보이도록 더 타이트한 세로 크롭이 필요할 수 있습니다. picture 요소는 미디어별 소스 옵션을 제공한 뒤 하나의 img 폴백을 가질 수 있습니다. 브라우저는 각 source의 media, type, srcset 정보를 고려하며 img는 대체 텍스트(alt), 치수 및 폴백 동작을 담당합니다.

각 크롭은 편집 및 접근성 검토를 거치게 하세요. 모바일 크롭이 제품 상세나 대체 텍스트에 언급된 사람을 제거할 수 있습니다. alt는 img에 넣고 이미지가 전달하는 정보나 기능을 설명하세요. 진정으로 장식용 이미지인 경우에만 alt=""를 사용하세요; 링크되거나 버튼인 이미지의 경우 외형 대신 동작을 설명하세요. 구성 변경이 없이 크롭이 동일하다면 picture를 도입하지 마세요: 보통의 너비 기반 srcset이 더 간단합니다.

적절한 사용 사례

복잡한 데스크톱 히어로는 휴대폰에서 별도의 세로 크롭이 필요합니다.

포맷 소스

picture의 source는 타입 힌트를 제공하고 넓게 사용 가능한 img 폴백을 보존할 수 있습니다.

05

비용이 큰 로딩 및 마크업 실수 피하기

일반적인 낭비는 모든 이미지에 sizes="100vw"를 복사하는 것입니다. 이것은 좁은 풀-너비 피겨에는 맞을 수 있지만 캡이 있는 컨테이너나 데스크톱 카드에는 맞지 않습니다. 반대의 실패는 리디자인 후 stale한(sizes가 오래된) sizes입니다. CSS와 sizes를 함께 변경하세요.

초기 가시 콘텐츠(initially visible content)에 중요한 이미지를 lazy-load하지 마세요. 권장 가이드라인은 화면 아래 이미지에 대해 지연 로딩을 하고, 보이는 히어로는 eager로 두는 것입니다. fetch priority는 진정으로 중요한 이미지를 우선시할 수 있지만, 광범위한 높은 우선순위나 preload 규칙은 성능을 해칠 수 있습니다. 파일명이나 캐시된 결과에 의존하지 마세요.

콜드 캐시 회귀

CMS, 프록시 또는 캐시가 잘못된 디스크립터나 의도치 않은 이미지 요청을 숨길 수 있습니다.

이미지 내 텍스트

필수 페이지 텍스트를 아트 디렉션 크롭에만 의존하지 마세요.

06

요청·크롭·수정 방법 테스트하기

그리드 브레이크포인트 바로 위·아래를 포함해 레이아웃 변경 너비에서 대표 페이지를 테스트하세요. 고밀도 설정, 넓은 데스크톱, 슬롯을 변경하는 상태들을 포함하세요. 렌더된 치수, 크롭, 대체 텍스트, 시각적 선명도를 확인하세요.

Chrome DevTools에서 Network(네트워크)를 열고 캐시 비활성화로 새로고침하거나 'Empty Cache And Hard Reload'를 사용하고 이미지 요청을 필터링하여 URL, 전송 크기, 헤더, initiator, 타이밍을 검사하세요. 지연(Throttling)을 적용해 늦거나 낭비적인 작업을 드러내세요. 뷰포트, 장치 스케일 팩터(device scale factor), 슬롯, 후보, 전송 바이트, 예상 결과를 기록하세요.

템플릿, 브레이크포인트, CDN 또는 자산 파이프라인이 변경될 때 이를 릴리스 게이트에 포함하세요. 좁게 수리하세요: sizes를 수정하거나, 디스크립터를 고치거나, 크롭을 재생성하거나, 폴백을 복원하거나, 불필요한 preload를 제거하세요. 빈 캐시 새로고침으로 재테스트하세요.

추측보다 관찰

네트워크 패널은 실제로 요청된 후보를 기록합니다.

범위 한계

이 검증은 이미지 전송 동작을 확인할 뿐 원본 용량, CDN 가용성 또는 전체 가동 시간(uptime)을 검증하지 않습니다.

07

SIU 복원력 제어로 적용하기

반응형 이미지는 불필요한 전송을 줄이지만 성공적 요청을 보장할 수는 없습니다. 원본 오류, 변환 불가, 서드파티 호스트 및 CDN 장애는 별도의 연속성 및 복구 계획이 필요합니다.

SIU를 위해 테스트 기록을 사용해 전송 회귀를 조기에 포착하고, 책임 템플릿 또는 변환 규칙을 식별하며, 릴리스 전 가장 작은 안전한 수정을 수행하세요. 이를 가용성 사전 점검(availability preflight) 및 롤백 계획과 함께 사용하세요.

소유권

모든 실패 선택 검사마다 컴포넌트 및 이미지 파이프라인 소유자를 지정하세요.

실행 / 검증

실무용 할 일 가이드.

  1. 01

    각 컴포넌트 분류

    유동(fluid), 고정 슬롯(fixed-slot), 아트 디렉션(art-directed), 장식적(decorative), 기능적(functional), 또는 중요 초기 가시 콘텐츠(critical visible content)로 표시하세요.

    검증: 슬롯 범위, 크롭 규칙, 소유자가 인벤토리 기록에 있습니다.
  2. 02

    슬롯 측정

    좁음·중간·넓음 상태에서 프로덕션과 유사한 그리드를 검사하세요.

    검증: 기록된 CSS 박스 너비에는 캡, 간격, 사이드바가 포함됩니다.
  3. 03

    디스크립터 선택

    유동 슬롯에는 w와 sizes를, 고정 슬롯에는 x를 사용하세요; 둘을 섞지 마세요.

    검증: 모든 srcset이 하나의 디스크립터 타입을 사용합니다.
  4. 04

    CSS에서 sizes 작성

    첫 매치(first-match) 조건과 슬롯을 설명하는 무조건 폴백을 사용하세요.

    검증: 테스트한 모든 뷰포트에서 매치되는 값이 신뢰할 만합니다.
  5. 05

    자산 검증

    모든 후보가 존재하고 선언한 내재적(intrinsic) 너비와 일치하는지 확인하세요.

    검증: 직접 요청이 의도한 파일과 유효한 폴백을 반환합니다.
  6. 06

    공간 예약

    일치하는 width와 height 값 및 비율을 유지하는 반응형 CSS를 제공하세요.

    검증: 이미지 도착으로 주변 콘텐츠의 불필요한 이동이 발생하지 않습니다.
  7. 07

    아트 디렉션 검토

    미디어별 크롭과 그 img 대체 텍스트를 모두 확인하세요.

    검증: 중요 피사체가 보존되고 대체 텍스트가 정확합니다.
  8. 08

    우선순위 설정 신중히

    화면 아래 이미지는 지연 로드하고 넓은 높은 우선순위 및 preload 규칙은 피하세요.

    검증: 진정한 시각적 히어로가 불필요한 경쟁 없이 즉시 요청됩니다.
  9. 09

    콜드 캐시 증거 수집

    DevTools 이미지 필터링, 캐시 비활성 새로고침, 대표 뷰포트를 사용하세요.

    검증: 릴리스 증거에 선택된 후보, 슬롯, 전송 크기, 크롭이 기록됩니다.
  10. 10

    수정 계획 수립

    템플릿 및 이미지 파이프라인 변경에 대해 대상 수정 또는 롤백을 지정하세요.

    검증: 각 실패에 소유자가 지정되고 수정 후 콜드 캐시 재테스트가 성공합니다.
토론 주제

트레이드오프를 비교하세요 — 개인정보는 공유하지 마세요.

이 프롬프트를 팀이나 웹사이트 소유자 커뮤니티와 함께 사용하세요. 방법과 교훈은 공유하되, 인증 정보·고객 기록·비공개 인프라 세부사항은 절대 붙여넣지 마세요.

  1. 01

    사이트에서 다운로드된 픽셀과 통상 렌더된 슬롯 간의 차이가 가장 큰 컴포넌트는 무엇이며, 이를 안전하게 측정하려면 어떻게 하시겠습니까?

  2. 02

    디자이너, CMS 소유자, 프런트엔드 팀은 모바일 크롭을 단순한 리사이즈가 아닌 아트 디렉션으로 결정할 때 어떻게 합의합니까?

  3. 03

    고객 데이터를 공유하지 않고도 릴리스 검토 중 반응형 이미지 회귀를 승인 또는 롤백하기 쉽게 만들 증거는 무엇입니까?

주요 / 신뢰할 수 있는 자료

출처 자료 열기

WHATWGImages in the HTML Standard ↗

디스크립터, 소스-사이즈 선택, 폴백 및 브라우저 선택에 대한 주요 규칙.

검토일: 2026-09-27
MDN Web DocsUsing responsive images in HTML ↗

srcset, sizes, 밀도 전환, 아트 디렉션 및 테스트에 대한 실무 가이드.

검토일: 2026-09-27
web.devResponsive images ↗

치수, 로딩, 디스크립터 및 레이아웃 제약에 대한 Google 지침.

검토일: 2026-09-27
MDN Web Docspicture HTML picture element ↗

미디어 및 타입 선택, 아트 디렉션, sizes 및 폴백에 대한 참조.

검토일: 2026-09-27
Chrome for DevelopersInspect network activity ↗

요청, 전송, 쓰로틀링, 필터링 및 빈 캐시 새로고침에 대한 지침.

검토일: 2026-09-27
W3C Web Accessibility InitiativeImages Tutorial ↗

의미 있는 이미지, 장식적 이미지, 기능적 이미지 및 텍스트 이미지에 대한 권장사항.

검토일: 2026-09-27

출처 정책 반응형 이미지 문법과 브라우저 선택에 대한 주장은 아래 나열된 공식 표준과 문서에 기반합니다. 릴리스 전에 사이트의 실제 템플릿에서 마크업, 후보 너비 및 렌더된 레이아웃을 검증하세요.

빠른 설명

자주 묻는 질문

srcset을 사용할 때 항상 sizes가 필요한가요?

유동 슬롯에는 브라우저가 소스-사이즈 추정치를 필요로 하므로 너비 디스크립터(w)를 사용할 때는 sizes를 사용하세요. 고정 크기 밀도 srcset은 x 디스크립터를 사용하며 sizes가 필요하지 않습니다. 하나의 소스셋에서 두 디스크립터 타입을 혼합하지 마세요.

sizes가 이미지의 CSS 너비를 변경하나요?

아니요. sizes는 로드 전 선택 힌트입니다. 렌더된 박스는 CSS와 컴포넌트 레이아웃이 결정하므로 레이아웃이 변경될 때 sizes를 함께 유지해야 합니다.

모든 반응형 이미지에 picture를 사용해야 하나요?

아니요. 구성(크롭)이 변경되지 않는 경우 서로 다른 크기에서 너비 기반 srcset을 사용하세요. 미디어 조건에 따라 다른 크롭이나 포맷별 소스가 필요할 때만 picture를 사용하고, 사용 가능한 img 폴백을 유지하세요.

Status Is UP Editorial Team · Uptime Enablement Editors

검토자: 웹 성능 및 접근성 검토자. 게시 2026-09-27; 업데이트 2026-09-30.