스프링
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개를 선택하는 것이 좋다
둘 다하는 것은 중복이다.