Web

Cache-Control vs Pragma Header

ellapk 2024. 12. 30. 11:11

 

1. Pragma 헤더

  • 도입 배경: HTTP/1.0에서 도입된 헤더로, 캐시 동작을 제어하기 위해 사용
  • 주요 기능:
    • Pragma: no-cache: 클라이언트가 캐시된 데이터를 사용하지 않고, 항상 서버에서 최신 데이터를 가져오도록 지시
  • 제한 사항:
    • HTTP/1.1부터는 비표준화된 헤더로 간주되며, 공식적으로 사용되지 않음
    • 주로 클라이언트 요청에서 사용되며, 서버 응답에는 거의 쓰이지 않음
  • 호환성:
    • HTTP/1.0 클라이언트를 지원하기 위해 존재

 


 

2. Cache-Control 헤더

  • 도입 배경: HTTP/1.1에서 더 정교한 캐시 제어를 위해 도입
  • 주요 기능:
    • 다양한 캐싱 지시어를 지원하며, 세부적으로 캐싱 동작 설정가능
    • 예시 지시어:
      • no-cache: 항상 서버에서 데이터 검증을 요청
      • no-store: 리소스를 캐시에 아예 저장하지 않도록 요청
      • max-age=<seconds>: 캐시된 데이터를 사용할 수 있는 최대 시간을 설정
      • must-revalidate: 캐시가 만료되면 서버와 반드시 검증하도록 요청
      • public/private: 리소스의 접근 범위를 지정
  • 장점:
    • 캐싱 제어가 정밀하고 명확
    • 서버 응답 및 클라이언트 요청에서 모두 사용 가능
    • CDN, 프록시, 브라우저와 같은 다양한 계층에서 잘 동작

 


 

3. 주요 차이점

특징 Pragma Cache-Control

도입 시기 HTTP/1.0 HTTP/1.1
사용 사례 주로 Pragma: no-cache로 캐싱 방지 캐싱을 세밀하게 제어 가능
지시어 지원 단일(no-cache만 지원) 다양한 지시어 제공
서버 응답 거의 사용되지 않음 서버와 클라이언트 모두에서 사용 가능
프록시 및 CDN 제한적 최적화된 캐싱 제어 가능

 

 


 

4. 함께 사용하는 경우

일부 환경에서는 HTTP/1.0과 1.1 클라이언트를 모두 지원하기 위해 두 헤더를 같이 사용하는 경우 존재

 

예를 들어:

Pragma: no-cache
Cache-Control: no-cache

이렇게 하면 최신 브라우저와 구형 클라이언트 모두에서 동일한 캐싱 동작을 보장 가능

 


 

5. 결론

  • HTTP/1.1 이상: Cache-Control을 사용하는 것이 좋음. 더 많은 기능과 명확한 동작을 제공
  • HTTP/1.0 호환성 필요: Pragma를 병행해 사용하지만, 가능하면 지양하는 것이 좋음.

Pragma는 이제 레거시 헤더로 간주되며, Cache-Control을 사용하는 것을 권장