HTTP 웹 지식

HTTP 헤더2 - 캐시와 조건부 요청 헤더

귀요미찰쓰 2022. 1. 28. 11:13
728x90
반응형
반응형

캐시 제어 헤더

- Cache-Control: 캐시 제어

- Pragma: 캐시 제어(하위 호환)

- Expires: 캐시 유효 기간(하위 호환)

 

캐시는 일단 캐시 제어와 관련된 헤더들이 있습니다. 그게 이제 Cache-Control이란 Pragma랑 Expires가 있는데요.

제일 먼저 가장 중요한 Cache-Control에 대해서 말하기전에 요즘은 Pragma랑 Expires는 하위 호환에만 사용하고 Cache-Control로다 다 제어 할 수 있습니다.

 

Cache-Control 캐시 지시어(directives)

 

- Cache-Control: max-age

    - 캐시 유효 기간, 초 단위

- Cache-Control: no-cache

    - 데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용

- Cache-Control: no-store

    - 데이터에 민감한 정보가 있으므로 저장하면 안됨(메모리에서 사용하고 최대한 빨리 삭제)

 

자 일단 Cache-Control는 캐시가 얼만큼 유효할거냐에 관한 것입니다. 그리고 초 단위로 입력할 수 있습니다. 보통 길게 잡는다. no-chace는 이름 그대로 캐시를 안하는 것입니다. 그런데 여기서 주의할게 있습니다! no-cache로 데이터는 캐시해도 되지만, 항상 서버에 검증하고 사용합니다. 그 다음에 no-store라는게 있습니다. 이게 뭐냐면 데이에 민감한 정보가 있으므로 저장하면 안된다는 것입니다. 보통 캐시면 하드 디스크에 저장되는데 만약 no-store가 있으면 메모리에서 사용하고 최대한 빨리 삭제하라는 뜻입니다.

 

 

Pragma 캐시 제어(하위 호환)

- Pragma: no-cache

- HTTP 1.0 하위 호환

 

그래서 지금은 거의 사용하지 않는다! 그런데 하위호환 때문에 사용한다면 사용하기도 합니다.

 

Expires 캐시 만료일 지정(하위 호환)

 

- expires: Mon, 01 Jan 1990 00:00:00:00 GMT

 

- 캐시 만료일을 정확한 날짜로 추정

- HTTP 1.0부터 사용

- 지금은 더 유연한 Cache-Control: max-age 권장

- Cache-Control: max-age과 함께 사용하면 Expires는 무시

 

이거는 캐시 만료일을 지정할 수 있습니다. 근데 Cache-Control처럼 초단위로 하는게 더 유연하다.

 

 

 

검증 헤더와 조건부 요청 헤더

 

- 검증 헤더(Validator)

    - ETag: "v1.0", ETag: "asid93jkrh2l"

    - Last-Modified: Thu, 04 Jun 2020 07:19:24 GMT

 

- 조건부 요청 헤더

    - If-Match, If-None-Match: ETag 값 사용

    - If-Modified-Since, If-Unmodified-Since: Last-Modified 값 사용

 

 

반응형