Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

가능세계

[Network] 캐시 제어 헤더(Cache-Control Headers)란 무엇인가요? 본문

Blog/Network

[Network] 캐시 제어 헤더(Cache-Control Headers)란 무엇인가요?

cona-tus 2023. 9. 11. 18:56

network-icon

 

사용자가 동일한 웹 사이트를 다시 방문할 때, 캐시 제어필요한 리소스를 캐시에서 가져올 것인지, 아니면 리소스 요청을 다시 서버로 보내야 하는지를 결정하는 규칙을 설정합니다.

 

클라이언트 요청 및 서버 응답 헤더에는 캐시 제어를 위한 지시어(directives)라는 것이 있습니다.

 

  • Cache-Control: 캐시 제어
  • Pragma: 캐시 제어(하위 호환)
  • Expires: 캐시 유효 기간 지정(하위 호환)

 

1. Cache-Control

Cache-Control 헤더는 요청과 응답 헤더로 사용하며, 이를 통해 리소스를 캐싱(데이터를 캐시에 저장하는 행위)하는 방법을 지시할 수 있습니다.

 

예를 들어, "클라이언트-중개 서버-원 서버"와 같은 구조인 경우, 중개 서버에 있는 캐시를 가져오지 않도록 하려면 요청 시부터 Cache-Control을 헤더로 넣어주곤 합니다.

 

캐싱을 위해 다음과 같은 지시어를 제공합니다.

 

  • Cache-Control: max-age
    캐시 유효 시간을 초 단위로 나타냅니다. 예를 들어 cache-control: max-age=120는 리소스가 120초 동안 유효하며, 그 이후에는 최신 리소스를 요청해야 함을 의미합니다.
  • Cache-Control: no-cache
    리소스에 대한 캐시를 생성하지만, 캐시 사용 전에 항상 원 서버에 검증하고 사용하도록 요구합니다.
  • Cache-Control: no-store
    데이터에 민감한 정보가 있으므로 리소스에 대한 캐시를 생성하지 않도록 지시합니다. 이는 private 캐시를 포함한 모든 유형의 캐시에 적용됩니다. 정보가 의도치 않게 저장된 경우, 가능한 한 빨리 삭제하려고 시도합니다.
  • Cache-Control: public
    리소스가 모든 캐시에 저장될 수 있음을 의미합니다. 공유 캐시 또는 중개 서버인 프록시 캐시 서버에도 저장될 수 있습니다.
  • Cache-Control: private
    클라이언트 웹 브라우저와 같은 특정한 사용자 환경에만 저장을 허용하는 것을 의미합니다. CDN이나 프록시 캐시 서버에서는 캐시 할 수 없습니다. 기본값이 private입니다.
  • Cache-Control: s-maxage
    프록시 캐시 서버에 적용되는 max-age입니다.
  • Cache-Control: Age
    원 서버의 응답이 프록시 캐시 서버에 머문 시간(sec)으로, 잘 사용되지 않습니다.



2. Pragma

Pragma: no-cache

HTTP Cache-Control HTTP/1.1 헤더가 없는 HTTP/1.0 하위 호환을 위해 사용하는 캐시 제어 헤더입니다.

 

Cache-Control: no-cache와 동일한 역할을 수행하지만 권장하지 않습니다.



3. Expires

Expires:  Wed, 01 Jun 2022 08:00:00 GMT

캐시 만료일을 정확한 날짜로 명시하며, 그 이후에는 만료된 것으로 간주합니다.

 

HTTP 1.0 하위 호환을 위해 사용되지만, 지금은 더 유연한 Cache-Control: max-age를 권장합니다.

 

만일 max-age와 함께 사용하면 Expires는 무시됩니다.




참고