Header Compression

HPACK은 반복 헤더를 테이블 참조로 바꾼다

HTTP/2는 HPACK으로 헤더 필드를 정적 테이블, 동적 테이블, 리터럴 표현으로 인코딩한다. 압축률은 헤더 구성과 테이블 상태에 따라 달라진다.

자주 쓰는 헤더 이름/값은 인덱스로 표현
동적 테이블은 같은 연결에서 반복되는 값을 기억
민감한 값은 never-indexed 같은 표현으로 보호
첫 요청

문자열을 보내고 테이블에 학습

:methodGET
:path/app.js
user-agent긴 브라우저 문자열
cookie민감하거나 큰 값은 신중히 처리

처음에는 리터럴 값이 많아 크기가 클 수 있다.

다음 요청

반복 값은 인덱스로 참조

STStatic Table:method GET
->
IDXIndexed Field문자열 대신 번호 참조
DTDynamic Table연결 안에서 학습한 반복 값
->
NINever Indexed위험한 값은 테이블에 넣지 않음

주의: HPACK은 “항상 90% 압축” 같은 고정 효과가 아니다. 쿠키 크기, 동적 테이블 상태, 중간자 처리 정책에 따라 결과가 달라진다.