코드 잡동사니
Cache-Control 헤더 본문
지시자 | 의미 |
---|---|
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개를 선택하는 것이 좋다
둘 다하는 것은 중복이다.
'스프링' 카테고리의 다른 글
Spring security UserDetailsService 를 사용하지 않고 AuthenticationProvider 로 사용하기 (1) | 2019.08.22 |
---|---|
Spring security hasRole, hasAuthority 차이점 (1) | 2019.08.21 |
HATEOAS (0) | 2019.07.08 |
HTTP 응답 코드 (0) | 2019.07.07 |
Spring MongoDB 트랜잭션 사용법 (0) | 2019.01.02 |
Comments