HTTP/2는 HTTP/1.1에서 극보하기 힘든 응답속도 측면에서 많은 개선이 있었다.
HTTP/1.1은 Persistent와 Pipelining 기능을 통해 하나의 TCP 세션에 여러개의 요청을 보낼 수 있다. 하지만 요청은 서버에서 순차적으로 처리되어 브라우저로 전달되므로 웹페이지 접속의 지연이 발생한다.(HOLB(Head of Line Blocking)
HTTP/2는 멀티플렉싱으로 하나의 TCP 커넥션만으로 해당 웹페이지의 모든 요청과 응답 데이터를 전송하며, 응답 순서에 무관하게 데이터를 처리한다. 별도의 최적화 과정이나 도메인 샤딩 없이 웹 사이트 로드 속도가 빨라진다.
HTTP/1.1은 요청과 응답에 헤더(Header)를 이용하여 가상호스팅, 사용자 환경 조사 등 다방면에서 활용할 수 있지만 요청/응답마다 같은 정보를 반복해서 전달해야 하는 비휴율적인 측면도 있었다. 이로인해 대역폭의 점유를 높여 회선 비용을 증가시키고 패킷 사이즈를 높여 네트워크 장비의 부담을 주었다.
HTTP/2에서는 중복되는 헤더의 반복 전송을 낮추기 위해 허프만 코드를 이용하는 HPACK 알고리즘을 이용하여, 중복 내용의 반복 비용이 높을수록 압축 효율이 커지게 하였다. HPACK는 서버로 전송되기 전에 각 헤더의 개별값을 압축한 다음 이전에 전송된 헤더 값 목록에서 인코딩된 정보를 조회하여 전체 헤더 정보를 재구성한다.
HTTP/1.1은 클라이언트가 요청한 부분만 응답하는 것이 일반적이다. 하지만 HTTP/2에서는 서버 푸쉬 기능을 통해 클라이언트가 요청하지 않았지만 향후 요청이 예상되는 데이터에 대해서 서버가 스스로 전송할 수 있다.
HTTP/1.1에서는 웹 페이지 렌더링 지연에 대처할 수 있는 옵션이 없었다.
HPPT/2에서는 페이지의 스타일을 정의한 css가 먼저 처리될 수 있도록 우선순위를 정의할 수 있다. 이 기능을 Stream Prioritization이라도 한다.
HTTP/2는 평문 통신과 보안(TLS) 통신을 모두 지원하고 있다. 구글이나 네이버 등 유명 홈페이지들에 HTTP/2가 기본적으로 적용된 것을 보면 보안접속을 기본으로 하고 있음을 알 수 있다.