컴퓨터 과학/네트워크

HTTP 기반 기술: 캐시(Cache)

Data Jun 2025. 10. 5. 14:05

HTTP 캐시는 웹 성능 최적화의 핵심 기술 중 하나로, 자원의 사본을 임시로 저장하여 빠르게 재활용하는 메커니즘입니다.
서버와의 불필요한 통신을 줄이고, 사용자가 더 빠르게 콘텐츠를 받아볼 수 있게 도와줍니다.

 

1. 캐시의 기본 개념

HTTP 캐시는 **“응답받은 자원의 사본을 임시로 저장하는 기술”**입니다.
이 덕분에 이후 동일한 요청이 들어올 때, 서버에 다시 요청하지 않고 저장된 데이터를 재사용할 수 있습니다.

이 방식은 다음과 같은 장점을 가집니다:

  • 불필요한 네트워크 낭비 방지
  • 서버 부하 감소 및 응답 지연 방지
  • 빠른 자원 접근 가능

캐시는 저장 위치에 따라 두 가지로 나뉩니다:

  • 🧍‍♂️ 개인 전용 캐시 (Private Cache): 사용자의 브라우저에 저장
  • 🌍 공용 캐시 (Public Cache): 클라이언트와 서버 사이의 중간 서버(프록시 등)에 저장

 

2. 캐시 신선도 검사와 유지

캐시의 핵심은 단순히 데이터를 저장하는 것이 아니라, ‘얼마나 최신 상태인지’(신선도) 를 유지하는 데 있습니다.

시간이 지나면 서버의 원본 데이터가 변경될 수 있기 때문에,
클라이언트는 “내가 가진 캐시 데이터가 아직 최신일까?”를 확인해야 합니다.
이것이 바로 캐시 신선도(Cache Freshness) 개념입니다.

 

예를 들어, 서버의 이미지 파일이 업데이트되었다면, 브라우저에 남아 있는 이전 버전(캐시)은 더 이상 최신이 아니게 됩니다.

 

 

3. 캐시 신선도 검사: 재검사 방식

캐시 신선도를 확인하는 대표적인 방법은 If-Modified-Since 헤더입니다.

이 헤더는 클라이언트가 마지막으로 데이터를 받은 시점을 서버에 알려주고,
그 이후로 원본 데이터가 수정된 적이 있는지를 묻습니다.

  • 변경이 없었다면 → 서버는 304 Not Modified로 응답하여 캐시 재사용
  • 변경이 있었다면 → 새 데이터를 다시 내려보냄

즉, 불필요한 데이터 전송을 줄이면서도 최신 데이터를 유지할 수 있는 효율적인 방법입니다.

 

 

4. 캐시 신선도 검사: 유효 기간 설정

캐시 신선도를 관리하는 또 다른 방식은 유효 기간(Expiration) 을 미리 설정하는 것입니다.
즉, **“이 데이터는 언제까지 최신으로 간주할 수 있는가”**를 명시하는 것이죠.

이를 설정하는 주요 헤더는 다음 두 가지입니다:

  • Expires: 캐시 만료 시점을 명시하는 날짜 기반 헤더
  • Cache-Control: max-age: 초 단위로 유효 기간을 명시

예를 들어,

  • Expires: Tue, 06 Feb 2024 12:00:00 GMT
  • Cache-Control: max-age=1200
    은 모두 캐시 데이터를 약 20분(1200초) 동안 유효하다고 지정하는 의미입니다.

 

정리하면

 

HTTP 캐시는 웹 통신의 효율을 극대화하기 위한 필수 요소입니다.
데이터를 무조건 새로 받아오는 대신, 필요할 때만 갱신하고, 그 외에는 캐시를 활용하는 구조를 통해
네트워크 부하를 줄이고 사용자 경험을 향상시킬 수 있습니다.