코드 잡동사니

Cache-Control 헤더 본문

스프링

Cache-Control 헤더

세객 2019. 7. 7. 12:31
지시자 의미
private 객체를 캐시하는 건 브라우저만 가능, 프록시나 CDN 는 캐시할 수 없다.
public 브라우저, 프록시, CDN 모두 객체를 캐시할 수 있다.
no-cache 객체를 아예 캐시하지 않는다.
no-store 메모리에서는 객체를 캐시하지만 디스크에는 저장하지 않는다.
max-age 리소스가 얼마 동안 유효한지 가르킨다.

Last-Modified, ETag 

마지막으로 브라우저가 GET 요청을 보낸 이후로 그 사이에 리소스가 변경되었는지 확인하고 싶을 때 사용하는 헤더

 

Last-Modified : 리소스의 최종 수정 일자

ETag : 리소스를 식별할 수 있는 어떤 값(ex: hash)

 

두 헤더의 도움을 받아 브라우저는 조건부 GET 요청을 전송하여 캐시된 리소스를 효율적으로 업데이트 가능

조건부 GET 요청은 서버 리소스가 변경되었을 경우에만 응답 전체를 받아오게 된다. 

 

조건부 GET 요청, ETag, IF-None-Match 헤더, 304-Not Modified 응답을 사용하면 대역폭과 컴퓨터 연산 시간을 아끼고 완전한 응답을 리턴하는 횟수 또한 줄이는 것이 가능

 

HTTP 응답시 Last-Modified, ETag 중에서 1개 그리고 Expires, Cache-Control maxage 중 1개를 선택하는 것이 좋다

둘 다하는 것은 중복이다.

Comments