SP.AGCY
Available for new projects
 
2026.08.03Front-end, User Experience

사진 한 장의 무게

WebP, AVIF부터 지연 로딩까지 이미지 이야기

사진 한 장의 무게
web.dev의 LCP 안내 글, 2.5초 이하는 좋음, 4초 초과는 나쁨으로 나눈 LCP 기준 막대 그림

1. 페이지를 무겁게 만드는 건 대개 사진입니다

사이트가 느리다는 이야기를 듣고 들여다보면 원인이 의외로 단순한 경우가 많습니다. 메인 사진이 카메라에서 바로 꺼낸 몇 메가바이트짜리 원본 그대로 올라가 있는 식이죠. 화면에는 가로 1,000픽셀 남짓으로 보이는데 브라우저는 그보다 몇 배 큰 파일을 통째로 내려받고 있는 겁니다. HTTP Archive의 웹 연감(Web Almanac) 2024년판을 보면, 모바일 페이지의 68%에서 첫 화면에 가장 크게 그려지는 요소인 LCP 요소가 이미지였습니다. 구글은 이 LCP가 2.5초 안에 끝나야 좋은 페이지로 봅니다. 이 기준이 사진 한 장에서 갈리는 일이 그만큼 흔하다는 뜻입니다. 코드를 아무리 다듬어도 사진이 무거우면 소용없습니다.

Squoosh에서 레드판다 사진 원본(2.79MB)과 AVIF 압축본(276kB)을 좌우로 나눠 비교하는 화면

2. 같은 사진도 형식만 바꾸면 가벼워집니다

가장 먼저 손댈 곳은 파일 형식입니다. 오랫동안 웹 사진은 JPEG, 투명한 이미지는 PNG가 기본이었지만 지금은 WebP와 AVIF라는 선택지가 있습니다. 둘 다 비슷한 화질을 더 작은 용량에 담는 형식이고, AVIF는 2020년 크롬 85를 시작으로 파이어폭스와 사파리를 거쳐 2024년 1월 엣지 121까지 지원하면서 주요 브라우저에서 모두 쓸 수 있게 됐습니다. 구글의 Squoosh 같은 도구에 사진을 넣고 형식을 바꿔 보면, 눈으로는 차이를 찾기 어려운데 용량은 확 줄어드는 게 보입니다. 다만 AVIF는 압축에 시간이 더 걸립니다. 같은 연감에서 웹 이미지 가운데 AVIF는 아직 1% 정도였으니 줄일 여지가 많이 남아 있습니다.

HTTP Archive 웹 연감 2024 미디어 장, 모바일 LCP 이미지의 9.5%가 지연 로딩을 쓴다는 수치

3. 화면에 맞는 크기를, 필요한 순간에

형식만큼 중요한 게 크기입니다. 스마트폰에 데스크톱용 2,400픽셀 사진을 보낼 이유는 없으니까요. img 태그의 srcset에 크기별 사진을 적어 두고 sizes로 그 사진이 화면에서 얼마나 넓게 보일지 알려 주면, 브라우저가 기기에 맞는 파일을 알아서 고릅니다. 화면 아래쪽 사진은 loading="lazy" 한 줄로 스크롤이 가까워질 때까지 미뤄 둘 수 있고요. 흔한 실수는 첫 화면의 큰 대표 사진까지 지연 로딩을 걸어 버리는 겁니다. 웹 연감은 모바일 LCP 이미지의 9.5%가 지연 로딩된다며 페이지를 크게 느리게 만드는 안티패턴이라고 짚었습니다. 대표 사진은 오히려 fetchpriority="high"로 먼저 불러오게 해야 합니다.

Next.js 공식 문서의 Image Optimization 페이지, 기기별 크기 최적화와 지연 로딩 설명

4. 세컨드펭귄의 시선: 올리는 순간 알아서 가벼워지게 만듭니다

우리는 이 과정을 사람 손에 맡기지 않으려고 합니다. 운영 담당자에게 매번 WebP로 바꿔서 올려 달라고 부탁하는 건 오래가지 못하거든요. 그래서 Strapi 같은 헤드리스 CMS에는 원본을 그대로 올리게 하고, 화면을 그리는 Next.js의 Image 컴포넌트가 기기에 맞춰 크기를 줄이고 형식을 바꾸고 지연 로딩까지 처리하게 둡니다. 기본은 WebP이고, 설정 한 줄이면 AVIF를 먼저 시도하게 할 수도 있죠. 방문자가 많으면 이 변환을 CDN에 맡기기도 합니다. 첫 화면 대표 사진만은 따로 표시해 먼저 불러오게 합니다.