일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CSS
- Python #CodeUp
- optional chanining
- React Kakao map
- React #Hooks
- HTML
- 카카오맵 api
- BOJ
- css #html
- HTML #CSS
- Python #Baekjoon
- es6
- 카카오맵
- Hooks
- spread operation
- 프로그래머스
- nextjs
- Default parameter
- Template literals
- Redux
- firebase
- Python
- es11
- Next
- JavaScript
- react
- Nullish Coalescing Operator
- Today
- Total
거북이개발자
HTTP/1.1 VS HTTP/2 본문
1. HTTP/1.1의 문제점
-HOLB(Head Of Line Blocking) :
-HOLB(Head Of Line Blocking) : HTTP 요청을 할 때는 요청을 하고 나서 응답이 와야 다음 요청을 할 수 있었는데 HTTP/1.1에 들어오면서 파이프라이닝 기법을 통해 응답을 받지 않고도 여러개의 요청을 연속적으로 할 수 있게 되었다. 하지만 이 또한 처음의 요청에 대한 응답이 오래 걸리는 경우, 그 다음 응답까지의 시간이 지연되는 현상이 발생한다. 이렇게 파이프라이닝 기법은 심각한 문제를 안고 있었으며 이를 Head Of Lin Block 문제라고 한다.
-무겁고 중복 많은 헤더 구조 : 요청을 할 때 요청에 메타정보를 넣어서 보내게 되는데, 매 요청마다 보내는 정보가 많아져서 헤더가 무거워지고 쿠키 같은 경우는 계속 보내게 되기 때문에 중복도 많아지는 문제가 있다.
2. HTTP/2의 개선 방법
-멀티플렉싱과 스트리밍 : HTTP 요청 데이터는 헤더와 본문을 구성되는데 이를 각각 프레임 이라는 단위로 지정하고 스트림이라는 연결단위를 통해 헤더 프레임 혹은 본문 프레임을 보내도록 그 방식을 바꿨다. 하나의 스트림은 요청/응답으로 구성되고 여러개의 스트림을 생성할 수 있다. 바로 이것이 스트리밍을 통한 멀티 플렉싱이다. 이를 통해 기존의 HTTP/1.1의 문제점인 HLOB를 해결할 수 있게 된다. 또한 요청한 리소스간의 우선순위를 설정하기 때문에 스트림 별로 가중치가 매겨지고 브라우저가 리소스들을 수신하는 순서를 적절하게 결정한다.
-서버 푸시 : 브라우저가 요청하지 않으면 서버는 응답하지 않는 것이 보통이지만, 요청한 HTML 문서에 리소스가 포함되어 있는 경우 서버가 브라우저에게 밀어주는(push)방식을 취하여 브라우저의 요청을 최소화시킨다.
-헤더 압축(Header Compression) : 헤더 테이블을 사용하여 이전 헤더 정보를 유지하고 허프만 인코딩 기법으로 헤더를 압축해서 전송하여 중복과 크기를 줄인다.
'Web > Web' 카테고리의 다른 글
HTTPS란? (0) | 2021.03.23 |
---|---|
HTTP란? (0) | 2021.03.23 |
브라우저 동작 방식 (0) | 2021.03.22 |
CSR(Client Side Rendering) VS SSR(Server Side Rendering) (0) | 2021.03.22 |