이번에는 HTTP 성능 최적화에 필수적인 '캐시'와 '조건부 요청'에 대해 다룬다. 캐시를 잘 활용하면 페이지 속도가 훨씬 빨라지고 서버 부하도 줄어든다.
1. 캐시의 기본 개념
- 같은 요청이라도 네트워크를 다시 타면 느림
- Cache-Control: max-age=60을 설정하면, 60초 동안은 네트워크 없이 캐시된 응답 사용 가능
- 캐시는 메모리/디스크 등에서 빠르게 꺼내 쓸 수 있어 성능 향상
2. 검증 헤더와 조건부 요청
- 캐시 유효 시간이 지난 경우, 변경 여부만 확인하고 본문은 다운로드하지 않음
- 주요 검증 헤더:
- Last-Modified: 마지막 수정 시각
- ETag: 리소스 고유 식별자 (해시처럼)
- 주요 조건부 요청 헤더:
- If-Modified-Since: 마지막 수정 시간이 변하지 않았으면 304 응답
- If-None-Match: ETag 값이 같으면 304 응답
3. 304 Not Modified
- 조건부 요청 결과, 변경된 게 없으면 304 Not Modified 응답
- 이 경우 본문은 전달하지 않고 헤더만 응답함
- 기존 캐시 데이터를 재사용해 네트워크 트래픽 감소
4. 캐시 제어 방식
- Cache-Control 주요 값:
- max-age: 캐시 유효 시간(초 단위)
- no-cache: 저장은 가능하나, 원 서버 검증 후 사용
- no-store: 아예 저장 금지. 민감한 정보에 사용
- must-revalidate: 만료 후 원 서버 검증이 반드시 필요
- Expires도 있지만 유연성 떨어져서 max-age 사용 권장
5. 프록시 캐시와 개인 캐시
- public: 프록시 서버(CDN 등)에 저장 가능
- private: 사용자 전용 캐시. 프록시에는 저장 금지
6. 캐시 무효화
- 민감한 데이터나 실시간성이 중요한 데이터에는 다음 설정 사용:
- no-store
- no-cache
- must-revalidate
- 예외적으로 네트워크가 끊겨도 프록시 서버가 이전 데이터를 줄 수 있게 할 수 있지만, must-revalidate가 있다면 무조건 504 오류 발생
7. 정리 퀴즈
- Q: 웹 브라우저에서 캐시를 사용하는 주된 이유는?
A: 네트워크 사용을 줄이고, 빠른 응답으로 사용자 경험을 높이기 위해서 - Q: 조건부 요청에서 304 응답은?
A: 데이터가 변경되지 않았으니, 캐시된 데이터를 재사용하라는 의미 - Q: ETag의 장점은?
A: 1초 미만 변화도 감지 가능하며, 더 정밀한 유효성 검사 가능 - Q: 민감한 정보가 있는 응답의 Cache-Control 값은?
A: no-store - Q: 프록시 캐시(CDN)의 목적은?
A: 원 서버의 부담을 줄이고 응답 시간을 단축하기 위함
'HTTP' 카테고리의 다른 글
[완강 인증] 인프런 김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의를 마치며 (5) | 2025.07.23 |
---|---|
[HTTP 완전 정복 시리즈] 8편 - HTTP 헤더1: 일반 헤더 (4) | 2025.07.23 |
[HTTP 완전 정복 시리즈] 7편 - HTTP 상태코드 완벽 정리 (0) | 2025.07.22 |
[HTTP 완전 정복 시리즈] 6편 - HTTP 메서드 활용법과 설계 전략 (5) | 2025.07.22 |
[HTTP 완전 정복 시리즈] 5편 - HTTP 메서드와 상태코드 제대로 이해하기 (0) | 2025.07.22 |