← 질문 목록
#23깊이 0
HTTP/2는 HTTP/1.1의 무엇을 고쳤는가?
한 연결에서 요청 하나가 끝나야 다음이 나가던 제약을 없앴다. 앞의 응답이 늦으면 뒤가 통째로 밀리던 문제가 여기서 온다. HTTP/2는 요청과 응답을 프레임으로 쪼개고 스트림 번호를 붙여 한 연결에 섞어 보낸다.
| 기준 | HTTP/1.1 | HTTP/2 |
|---|---|---|
| 한 연결의 요청 | 순서대로 하나씩 | 여러 개가 섞여서 |
| 헤더 | 매번 통째로 | 표로 눌러서(HPACK) |
| 브라우저 우회책 | 도메인 쪼개기, 스프라이트 | 필요 없어진다 |
도착한 순서대로 다시 조립되므로 순서 제약이 사라진다. 연결 하나로 충분해진다.
HTTP/1.1도 연결을 재사용하기는 했다. 다만 응답이 보낸 순서대로 와야 해서 앞의 것이 느리면 뒤에 줄 선 요청이 전부 기다렸다. 그래서 브라우저는 도메인당 연결을 예닐곱 개씩 열었고, 이미지를 하나로 합치는 기법이 유행했다.
HTTP/1.1의 우회책은 HTTP/2에서 오히려 비용이 된다. 도메인을 쪼개면 연결이 늘어 HTTP/2의 이점이 사라진다. 스프라이트는 한 조각만 바뀌어도 전체를 다시 받게 만든다.