HTTP 기반 지식 정리 - 2

박경현·2023년 3월 19일
0

인프런에 김영한님의 http 강의를 들으면서 공부한 내용들을 정리해보려고 한다

http에 대해 깊이 있는 내용이 궁금하신 분들보다는 처음 접해보거나 애매하신 분들이 공부하면 좋을거 같다!!

HTTP 헤더 개요

http 전송에 필요한 모든 부가정보들이 header에 들어있다!!

서버 정보, 캐시 관리 정보, 인증 등등이 들어있다

표현 헤더

표현 헤더라고 해서 그걸 사용하고 있다
(표현헤더는 표현데이터를 해석할 수 있는 정보를 제공!)

표현 - 표현헤더는 전송과 응답 둘 다 사용!

Content-type: 표현데이터의 형식 (text/html, application/json 등등)
Content-Encoding: 표현데이터의 압축방식 (gzip, deflate 등등)
Content-Language: 표현데이터의 자연 언어
Content-Length: 표현데이터의 길이

헤더 내 포함 된 내용 => 협상(요청시에만 사용!)

클라이언트가 선호하는 표현 요청하는 것이다!

Accept: 클라이언트가 선호하는 미디어 타입 전달
Accept-Charset: 클라가 선호하는 문자 인코딩
Accept-Encoding: 클라가 선호하는 압축 인코딩
Accept-Language: 클라가 선호하는 자연 언어

만약 한국어 안되면 -> 독일어보다 영어를 원한다면 우선순위 사용! (1과 근접할수록 우선순위!)

캐시

캐시가 없었을 때

데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운 받아야함 -> http의 stateless 속성때문!
인터넷 네트워크는 매우 느리고 비쌈!!

그래서 cache 관련 정보들을 헤더에 넣는다!

두번째 요청시에는 브라우저 캐시를 뒤져서 그걸 가져옴!
60초 초과했을때 => 다시 요청!, 서버는 같은 내용을 다시 내려줌!!

만약 캐시가 만료 되었을때 다시 다운로드 안 받아도 되는 방법은?(조건부 요청과 검증헤더!)

검증해더와 조건부요청!!

캐시 만료후에도 서버에서 데이터를 변경하지 않았다는걸 증빙하면 됨! -> 검증헤더 추가!

검증헤더

조건부 요청 -> 데이터 최종 수정일을 붙여서 서버에 넘김 ->

수정할 게 없다면 -> 캐시로 가라 304를 찍어줌!! body없이 서버에서 다시 전송!

검증헤더와 조건부 요청 - 이번에는 tag를 붙여서 관리하자!

검증해더 - 서버데이터와 캐시 데이터가 같은지 검증하는 데이터
Last-Modified,

조건부 요청해더

if-Modified-Since -> 이 이후 데이터 수정 되었는지 확인, 304 보내줌!
하지만 수정이 되었다면 200, 그리고 모든 데이터 다시 전송!

단점 -> 1초 미만 단위로 캐시 조정이 불가능!, 날짜 기반의 로직 사용

굳이 내가 스페이스나 주석처럼 크게 영향이 없는 변경에서 캐시를 유지하는 경우!

ETag,
캐시용 데이터에 임의의 고유한 버전 이름을 달아둠, 데이터가 변경되면 이름을 바꾸어서 변경!

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글