GN⁺: HTTP/2 Push 중단 의도
(groups.google.com)HTTP/2 Push 비활성화 계획
- 발표자: Valentin Gosu
- 날짜: 2024년 9월 5일
요약
- HTTP/2 Push 비활성화 계획: 모든 플랫폼에서 HTTP/2 Push를 비활성화할 예정임
-
다른 브라우저의 상태:
- Safari: HTTP/2 Push 비활성화에 대한 공식 자료는 없지만, 로컬 테스트 결과 현재 버전에서 푸시 스트림을 거부함
-
Chrome: 2022년 9월 Chrome 106 버전에서 HTTP/2 Push 비활성화,
rel="preload"
와 103 Early hints를 대체 방법으로 권장함
-
Firefox의 상황:
- Firefox는 최근까지 HTTP/2 Push를 지원했으나, 최근 몇 달 동안 HTTP/2 Push로 인해 Firefox에서만 발생하는 웹 호환성 버그가 발견됨
- 웹 서버와 웹사이트가 Firefox에서 테스트하지 않으면 이 기능이 웹사이트가 Firefox에서만 작동하지 않게 할 수 있음
- HTTP/2 Push를 비활성화할 예정이지만, 구현은 당분간 남아 있을 예정임
- 내년 봄 ESR 140 브랜치 전에 완전히 제거할 가능성이 높음
문의사항
- 문의: 우려 사항이 있으면 알려달라고 요청함
# GN⁺의 정리
- HTTP/2 Push 비활성화: Firefox가 HTTP/2 Push를 비활성화하는 이유와 다른 브라우저의 상태를 설명함
- 웹 호환성 문제: HTTP/2 Push로 인해 발생하는 Firefox 전용 웹 호환성 문제를 해결하기 위함
-
대체 방법:
rel="preload"
와 103 Early hints를 대체 방법으로 권장함 - 관련 프로젝트: HTTP/2 Push를 대체할 수 있는 다른 기술이나 프로젝트를 고려할 수 있음
Hacker News 의견
-
HTTP/2 Push가 실패한 이유를 설명하려던 사람들에게 사과가 없어서 불만임
- Google의 전문가들이 HTTP/2 Push를 스펙에 포함시키려 했음
- 스펙에 보수적으로 접근해야 함
-
HTTP/2 Push 실패 이유가 설득력 없었음
- Jake Archibald의 블로그 글이 브라우저 구현 문제를 지적했음
- 브라우저가 이미 preload 링크를 지원함
-
HTTP/3 0-RTT 시작과 103 Early Hints를 사용하면 속도를 회복할 수 있음
- HTTP/1과 역호환 가능함
-
HTTP/2 Push의 종말이 아쉬움
- .NET과 nginx에서 제대로 구현되지 않았음
- 캐시 다이제스트 부족이 문제였음
- Chrome은 결국 이를 제거했음
-
Firefox가 HTTP/2 Push를 제대로 처리하지 못함
- 다른 브라우저는 이를 무시하지만 Firefox는 문제를 일으킴
-
HTTP/2 Push가 널리 채택되지 않은 이유에 대한 의문
- 브라우저 지원 부족 또는 CDN과의 호환성 문제일 가능성
-
HTTP/2 Push를 REST API에 활용하는 아이디어가 있었음
- 서버가 관련된 자원을 한 번에 가져와서 클라이언트에 푸시할 수 있음
- JSON:API와 같은 다른 메커니즘으로도 구현 가능함
-
HTTP/2 Push 관련 기사와 연구 링크 제공
-
Mike Belshe와의 대화에서 HTTP/2 Push의 문제점이 논의되었음
- '오버 푸시' 문제와 브라우저 캐시와의 소통 문제
- HTTP Early Hints와 Resource Hints가 HTTP/2 Push의 필요성을 대체함