일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코드 스테이츠 백엔드 교육과정
- 금감원 백내장 민원
- 해시
- Code States 백엔드 합격 후기
- 금융감독원
- HLB
- 코드스테이츠 부트캠프
- codestates 국비지원 1기 합격 후기
- 겜스고
- 코드스테이츠 백엔드 부트캠프 합격
- 금감원
- 금융감독원 민원신청
- 보험금 지급거절
- 백내장 금감원
- CodeState 후기
- 백준 알고리즘
- 에이치엘비
- 코드스테이츠 합격 후기
- 자바
- 백내장
- Java
- 메서드
- 코드스테이츠 백엔드 교육과정
- 코드스테이츠 백엔드 후기
- Spring
- 코드스테이츠 합격
- 코드스테이츠 부트캠프 합격 후기
- 백내장 다초점렌즈 삽입술
- 코테 합격후기
- Gamsgo
Archives
- Today
- Total
개발하는 동그리
[네트워크] HTTP 헤더 2 본문
반응형
캐시 적용 전
- 인터넷 네트워크는 느리고 비싸다
- 브라우저의 로딩 속도가 느리다
- 계속 네트워크를 통해 데이터를 다운로드하여야 한다.
캐시 적용 후 (캐시가능 시간 내)
- 캐시를 사용하면 캐시 가능시간동안 네트워크 사용하지 않아도 된다.
- 비싼 네트워크 사용량 줄일 수 있다.
- 브라우저 로딩속도가 빠르다.
캐시 적용 후 (캐시가능 시간 초과)
- 캐시 적용전과 마찬가지다.
- 기존 캐시기록 초기화
- 만약!! 캐시데이터가 변하지 않았다면, 검증 헤더를 사용하면 된다.
조건부 요청 헤더
- 검증 헤더 조건에 따른 분기
- If-Modified-Since : Last-Modified 사용
- If-None-Match: ETag 사용
- 조건이 만족하면 200 OK
- 조건이 만족하지 않으면 304 Not Modified
검증 헤더
- 캐시데이터와 서버 데이터가 같은지 검증하는 데이터
- Last-Modified, ETag
Last-Modified & If-Modified-Since
: 캐시를 저장해서 반복해서 데이터를 불러올 때 데이터 부담 없이 재사용
- 클라이언트가 서버에 요청
- 서버에서 Last-Modified : 2022년 06월 07일 12:00:00 (최종 수정일) 포함해서 응답
- 클라이언트는 브라우저 캐시에 (최종 수정일) 저장
- 추후에 다시 요청시 캐시 확인 후 있으면 HTTP 요청 헤더(if-modified-since)를 추가하여 서버 요청
- 서버에서 매치가 되면 304 Not Modified를 보내고 body 없이 응답 / 매치 안되면 2~3번으로 go
- 웹 브라우저는 브라우저 캐시에서 꺼내서 사용!
ETag (Entity Tag) & If-None-Match
: 서버에서 임의의 고유한 버전 이름을 달아둠
- 데이터가 변경되면 다른 Hash 값 생성! (Hash로 관리)
- 단순하게 ETag만 보내서 같으면 유지하고 다르면 다시 받기.
- 캐시 제어 로직을 서버에서 완전히 관리 ( 클라이언트는 전혀 모름 )
- 클라이언트가 서버에 요청
- 서버에서 ETag 포함해서 응답
- 클라이언트는 브라우저 캐시에 ETag 저장
- 추후에 다시 요청시 ( ETag 유무 체크 후 있으면 ) ex). If-None-Match 값을 함께 보냄
- 서버에서 매치가 되면 304 Not Modified를 보내고 body 없이 응답 / 매치 안되면 2번으로 go
- 웹 브라우저는 브라우저 캐시에서 꺼내서 사용!
캐시 제어 헤더
- Cache-Control : 캐시 제어 ⭐⭐⭐⭐
- Cache-Control: max-age : 캐시 유효 시간
- Cache-Control: no-cache : 데이터는 캐시해도 되지만, 항상 (orgin) 서버에 검증하고 사용
- Cache-Control: no-store : 데이터에 민감하므로 저장하면 안됨 (최대한 빨리 제거)
- Cache-Control: public : public cache에 저장되도 되는 것 (프록시 캐시)
- Cache-Control: private : 사용자만을 위한 캐시 (default)
- Cache-Control: s-maxage : 프록시 캐시에만 적용되는 max-age
- Cache-Control: no-cache :
- 프록시 캐시가 원서버에 접근을 못할 시 프록시 캐시가 설정에 따라 이전 캐시값을 응답할 수도 있다.
- Cache-Control: no-store
- Cache-Control: must-revalidate :
- 캐시 만료후 최초 조회시 원 서버에 검증해야함
- no-cache와 다르게 원서버에 접근할 수 없는경우에 항상 오류가 발생해야한다. (504 Gateway Timeout)
- Pragma: no-cache
- HTTP 1.0 하위 호환
- Pragma : 케시 제어 (하위 호환) : 현재 잘 사용하지 않음
- Expires : 캐시 유효 기간 (하위 호환) : 캐시 만료일을 날짜로 사용하고, Cache-Control : max-age를 권장한다.
반응형
'IT 정보 > Spring' 카테고리의 다른 글
[Spring] FrameWork (36) | 2022.06.15 |
---|---|
[네트워크] HTTP 메서드 (44) | 2022.06.08 |
[네트워크] HTTP 헤더 (12) | 2022.06.07 |
[네트워크] HTTP 상태 코드 (13) | 2022.06.07 |
[네트워크] SPA(Single Page Application) : AJAX (8) | 2022.06.05 |