Technote

성능 최적화 실무

LCP 를 줄이는 프리로드 체크리스트 — 실측으로 고른 자원만

preload 는 우선순위를 사는 게 아니라 빌리는 것입니다. 남발하면 정작 급한 자원이 밀립니다. LCP 요소를 실측으로 특정하고 그 경로의 자원만 올리는 순서를 정리합니다.

<link rel="preload"> 는 브라우저의 다운로드 대기열에 새치기를 시키는 선언입니다. 새치기가 많아지면 대기열 자체가 무의미해집니다 — preload 목록이 길다는 것은 우선순위가 없다는 뜻입니다.

순서: 특정 → 경로 → 선별

프리로드는 마지막 단계다 — 특정 없이 선언부터 하면 소음이 된다
  1. LCP 요소부터 특정합니다. DevTools Performance 패널이 어떤 요소가 LCP 인지 정확히 알려 줍니다. 히어로 이미지라 짐작했는데 실제로는 웹폰트를 기다리는 제목 텍스트인 경우가 흔합니다.
  2. 그 요소의 로드 경로를 추적합니다. CSS 안 background-image 는 CSS 파싱 후에야 발견되고, 폰트는 CSS 뒤에 숨어 있습니다 — 이런 “늦게 발견되는 자원” 이 프리로드의 정당한 대상입니다.
  3. 2~3개만 올립니다. LCP 이미지 1 + 첫 화면 글리프를 덮는 폰트 서브셋 정도가 상한입니다.

한글 사이트 특유의 함정: 폰트

한글 웹폰트는 커서 서브셋으로 쪼개 배포합니다. 이때 첫 화면 문구가 실제로 쓰는 서브셋만 프리로드해야 합니다 — 전 서브셋을 올리면 수십 요청이 이미지보다 먼저 대역을 차지합니다. 그리고 폰트 도착 전 폴백 글꼴의 폭이 다르면 제목이 줄바꿈을 바꾸며 레이아웃이 출렁입니다. size-adjust 로 폴백의 메트릭을 본 폰트에 맞춰 두면 도착 전후의 레이아웃이 같아집니다.

<link rel="preload" href="/fonts/subset-81.woff2" as="font" type="font/woff2" crossorigin>

@font-face {
  font-family: 'Fallback';
  src: local('Malgun Gothic');
  size-adjust: 88%;   /* 본 폰트 폭에 맞춘 실측값 */
}

카피를 바꾸면 프리로드 목록이 낡습니다. 첫 화면 문구 변경 시 서브셋 커버리지를 다시 계산하는 것까지가 이 체크리스트입니다.

재실측으로 닫기

같은 URL · 같은 기기 프로파일 · 같은 시간대에서 3회 이상 재고 중앙값으로 판단합니다. 1회 측정은 네트워크 요동을 개선으로 착각하게 만듭니다. 캐시 계층이 응답 시간에 주는 영향은 Redis 적중률 읽는 법과 이어집니다. 전/후 실측 리포트를 포함한 성능 작업은 최적화 지원 사업이 담당합니다.

이 주제의 다른 글

노하우 목록으로

성능 최적화 실무

마케터가 직접 확인하는 랜딩 페이지 속도

개발자에게 "빠르게 해 주세요" 라고 요청하면 무엇을 해야 할지 정해지지 않습니다. 이미지 · 서드파티 스크립트 · 폰트 · 히어로 이미지 네 가지는 마케터가 직접 확인해 항목으로 넘길 수…

마케터 5분 읽기

성능 최적화 심화

부모 테마 자산 걷어내기 — 절차와 뒤따르는 책임

쓰지 않는 스크립트를 내리는 것은 가능합니다. 다만 그 자산에 기대던 기능의 책임이 함께 넘어오므로, 무엇이 실제로 깨지는지 확인하는 절차가 필요합니다.

개발자 5분 읽기

₩270,000 · 신청하기