HTTP 103 Early Hints는 서버가 최종 응답을 준비하는 동안 Link 헤더를 미리 전달하는 정보성 응답이다. 브라우저는 지원되는 preload나 preconnect 작업을 먼저 시작할 수 있지만, 해당 리소스가 반드시 즉시 요청되거나 페이지가 더 빨리 표시된다는 보장은 없다. 103의 헤더는 최종 응답을 대신하지 않으며, 최종 응답이 유효한 문서 정보를 결정한다. RFC 8297 Chrome 설명

최종 HTML보다 먼저 리소스 힌트를 전달하는 HTTP 흐름 개념도

개념도이며 실제 브라우저 측정이나 네트워크 캡처가 아니다.

103은 정보 응답이며 최종 문서가 아니다

HTTP 103은 1xx 정보 응답이다. 서버는 최종 응답에 포함될 가능성이 높은 헤더 정보를 미리 알릴 수 있고, 클라이언트는 기다리는 동안 이를 선제적으로 평가할 수 있다. 서버가 처리 중에 처음 알린 값이 부정확하다고 판단하면 최종 응답에서는 생략하거나 바꿀 수 있다. 그러므로 미리 받은 헤더만으로 실제 문서의 최종 정책이나 응답 상태를 단정하면 안 된다. 힌트가 없거나 클라이언트가 이를 무시해도 최종 응답의 처리는 정상적으로 이어져야 한다. RFC 8297

Link preload와 preconnect는 서로 다른 힌트다

Link: <https://static.example.org/app.css>; rel=preload; as=style은 브라우저에 특정 리소스를 미리 가져올 기회를 알린다. rel=preconnect는 해당 origin과의 연결 준비를 요청하는 별도 지시다. 이 둘은 서버가 그 파일을 보냈다는 뜻이나, 모든 브라우저가 같은 동작을 한다는 약속이 아니다. 리소스 URL·유형·교차 출처 자격 증명이 최종 문서의 참조와 맞지 않으면 재사용되지 않고 불필요한 다운로드가 생길 수 있다. 예시는 동작 설명용이며 실제 페이지에 복사하기 전에 Link 문법과 자원 필요성을 확인해야 한다. RFC 8288 Chrome 설명

서버 작업과 일부 네트워크 준비를 겹칠 수 있다

Early Hints의 기회는 클라이언트가 최종 HTML을 받기 전에 올바른 단서를 얻었을 때 생긴다. 그동안 지원되는 클라이언트는 리소스 preload나 연결 수립을 시작할 수 있고, 서버의 나머지 작업과 일부 전송을 겹칠 수 있다. 하지만 힌트가 늦게 오거나, 응답 생성이 빠르거나, 자원이 이미 캐시에 있거나, 최종 페이지가 다른 리소스를 쓰면 이점은 작거나 없을 수 있다. 반대로 잘못된 preload는 대역폭을 쓰거나 최종 문서가 필요로 하는 요청과 중복될 수 있다. 이는 조건부 최적화이지 고정된 시간 절감 수단이 아니다. RFC 8297 Chrome 설명

전문 실무 관점에서 요청 결과를 측정한다

실서비스에서는 조건이 비슷한 페이지 방문을 103을 받은 경우와 받지 않은 경우로 나눠 관찰하면 결과를 읽기 쉽다. 첫 방문과 재방문을 구분하고, 비교 집단의 페이지 조건을 맞춘다. 실제 전달 경로, 사용 브라우저와 연결 방식도 기록해 캐시 상태가 103의 효과를 가리지 않게 한다. 힌트 전송 시각, 최종 응답 도착, 예고한 자원의 실제 요청과 완료, 렌더링에 사용된 자원을 각각 기록한다. 요청 수만 비교하면 이미 캐시에 있던 파일이나 사용되지 않은 preload를 성과로 오인할 수 있다. 최종 문서가 참조하지 않은 전송량과 연결 동작, 자원 우선순위의 변화도 살펴 페이지별 유지 여부를 결정한다. 실무자 관점에서 이 비교는 응답 의미를 실제 서비스의 관측값과 연결하는 방법이며 성능 향상을 보장하지 않는다.

실제 적용은 페이지와 클라이언트 범위를 좁혀 검토한다

Chrome Developers의 안내는 방문이 많은 진입 페이지와 초기 렌더링에 중요한 자원부터 후보로 삼도록 설명한다. 다만 문서에 적힌 브라우저 동작과 제한을 특정 구현의 설명으로 읽어야 하며, 전체 브라우저의 보편적 지원표로 일반화하면 안 된다. 최종 응답의 Link 선언, 리디렉션, 캐시, 자격 증명 설정을 함께 점검하고, 103을 무시하는 클라이언트도 최종 HTML이나 헤더만으로 자원을 받을 수 있게 유지한다. 실제 배포 환경에서 대조군을 두고 사용자 지표, 사용되지 않은 preload, 중복 요청, 전송 바이트를 확인한 뒤 범위를 넓힌다. Chrome 설명

Sources