모바일 청첩장을 제작하며, 모바일 기기에서 배경 영상(.mp4, .webm)이 느리게 로딩되거나 끊기는 현상이 발견되었다. 특히 3G 또는 저속 네트워크 환경에서의 경험이 현저히 나빠지는 문제가 발생했다. 이를 해결하기 위해 다양한 테스트와 성능 최적화를 시도하였고, 그 과정을 기록으로 남긴다.
wedding-bg.mp4, wedding-bg.webm<video autoplay muted loop playsinline>.mp4 + .webm 모두 제공 중이나 1080p 해상도였음ffmpeg -i input.mp4 -vf scale=854:480 -b:v 1000k -bufsize 1000k -c:a aac -movflags +faststart output.mp4<video> 태그 속성 정비<video autoplay muted playsinline loop preload="auto">
<source src="/videos/wedding-bg.webm" type="video/webm" />
<source src="/videos/wedding-bg.mp4" type="video/mp4" />
</video><video ... poster="/images/video-fallback.jpg">...</video>const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.play();
} else {
entry.target.pause();
}
});
});
observer.observe(document.querySelector("video"));{
"headers": [
{
"source": "/videos/(.*)",
"headers": [
{ "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
]
}
]
}| 네트워크 환경 | 영상 로딩 시간 (초) | UX 체감 |
|---|---|---|
| 5G | 0.5~1.0 | 매우 쾌적 |
| LTE | 1.5~2.5 | 쾌적 |
| 3G (시뮬레이션) | 4.5~6.0 | 로딩지연, UX 저하 |
| Wi-Fi (10Mbps) | 0.3~0.6 | 매우 쾌적 |
✅ 영상 fallback 적용 + 해상도 최적화 이후, 3G에서도 3초 내 진입 가능
| 항목 | 체크 |
|---|---|
| 해상도 480p/720p 제공 여부 | ✅ |
.webm + .mp4 포맷 동시 지원 |
✅ |
<video> autoplay, muted, playsinline |
✅ |
poster 이미지 fallback 제공 |
✅ |
| Lazy loading 및 JS 최적화 | ✅ |
| CDN 캐싱 및 헤더 설정 | ✅ |
| 실제 저속 네트워크 환경 테스트 | ✅ |
모바일 웹에서 영상은 “리스크 높은 자산”이다. 청첩장과 같은 감성 기반 UX를 위해 영상이 필수였지만, 오히려 사용자 경험을 해치는 요소가 될 수 있음을 깨달았다.
“퍼포먼스 최적화는 기능이 아닌 기본”
영상의 존재 자체보다, 그것을 어떻게 전달하느냐가 핵심이다.
