반응형
💡 “서버 성능이라면서 왜 이미지나 CSS 이야기를 하죠?”
사용자가 느끼는 "속도"는 단순히 서버 응답 시간뿐만 아니라
페이지가 얼마나 빨리 보이느냐로 결정됩니다.
→ 즉, 정적 자원을 어떻게 처리하느냐가 서버 전체 성능 체감에 큰 영향을 줍니다.
🧾 정적 vs 동적 자원이란?
구분 | 설명 | 예시 |
정적 자원 | 바뀌지 않는 파일, 서버가 계산 없이 바로 전송 | 이미지, JS, CSS, HTML |
동적 자원 | 요청마다 내용이 바뀌는 데이터 | API 응답(JSON), 검색 결과 등 |
🚀 정적 자원 최적화 전략
✅ 1. CDN(Content Delivery Network) 활용
- 전 세계 엣지 서버에 정적 자원 배포
- 사용자에게 가장 가까운 서버에서 응답
- Cloudflare, AWS CloudFront, Vercel 등 활용
<link rel="stylesheet" href="https://cdn.example.com/styles.css">
✅ 정적 자원은 원서버가 아닌 CDN에서 제공 → 트래픽 감소 + 응답 속도 향상
✅ 2. 브라우저 캐싱 설정
Cache-Control: max-age=31536000
- 한 번 받은 정적 자원을 브라우저에 저장
- 페이지 재방문 시 다시 다운로드하지 않음
- JS/CSS, 이미지 등에 강력하게 적용 가능
✅ 3. 이미지 최적화
전략 | 설명 |
WebP 사용 | JPG/PNG보다 용량 ↓, 품질 유지 |
Lazy Loading | 화면에 보일 때 로드 (loading="lazy") |
크기 조절 | 필요한 해상도만 전달 (srcset, picture) |
이미지 CDN | 이미지 전용 처리 서버로 자동 최적화 |
<img src="cat.jpg" loading="lazy" width="300">
✅ 사용자는 스크롤할 때만 이미지 로딩 → 초기 렌더링 속도 개선
✅ 4. JS / CSS 최적화
전략 | 설명 |
압축(minify) | 공백/주석 제거 → 용량 ↓ |
번들링(bundle) | 여러 파일을 하나로 병합 → 요청 수 ↓ |
코드 분할(code splitting) | 필요한 파일만 로딩 → 초기 속도 ↑ |
defer / async 속성 | JS 파일 로딩 시 렌더링 지연 방지 |
<script src="main.js" defer></script>
🔄 동적 자원 처리 팁
- API 응답은 캐싱 가능 여부 검토 (예: 인기 게시글 목록)
- SSR(서버 사이드 렌더링) or SWR(재검증 전략) 등으로 느린 API 보완
- GraphQL의 @defer 같이 부분 응답도 고려 가능
🧠 실무 적용 순서 예시
- 이미지 용량 체크 → WebP로 변환
- JS 번들링/압축 적용 → Webpack, Vite 설정
- CSS 분할 적용 → unused CSS 제거
- 정적 자원 CDN 이전
- Cache-Control 헤더 적용 및 브라우저 캐싱 확인
🧠 정리 한마디!
"정적 자원은 서버의 부담을 가장 쉽게 줄일 수 있는 성능 향상 지점입니다."
✔️ 핵심 요약
항목 | 해야 할 일 |
이미지 | WebP, lazy load, CDN 적용 |
JS/CSS | 번들링 + minify + defer |
자원 전송 | CDN 활용 + 브라우저 캐싱 |
동적 자원 | 필요 시 캐싱, 코드 분할 |
반응형
'개발 공부 > 서버' 카테고리의 다른 글
[서버 성능 최적화] 메모리 & CPU 최적화, GC 튜닝과 메모리 누수 잡기 (2) | 2025.05.29 |
---|---|
[서버 성능 최적화] 웹서버 튜닝, Nginx와 Apache에서 성능을 끌어올리는 설정법 (3) | 2025.05.28 |
[서버 성능 최적화] 비동기 처리와 병렬 처리, 서버를 멈추지 않고 일 시키는 법 (0) | 2025.05.26 |
[서버 성능 최적화] 로드밸런싱 다시 보기, 서버가 많아지면 꼭 필요한 분산 전략 (1) | 2025.05.23 |
[서버 성능 최적화] DB 쿼리 성능 최적화 전략, 인덱스, N+1 문제, 정규화/비정규화 (0) | 2025.05.22 |