Community

Cloudflare가 RFC 9218 HTTP Extensible Priorities를 지원하기 시작했습니다. Cloudflare가 이를 지원한다는 걸 설명하는 글이지만 여기서 HTTP/3의 Pri

Cloudflare가 RFC 9218 HTTP Extensible Priorities를 지원하기 시작했습니다. Cloudflare가 이를 지원한다는 걸 설명하는 글이지만 여기서 HTTP/3의 Prioritizaion에 대해서 배울 수 있습니다. 이는 HTTP/3에서 응답의 우선순위를 결정할 수 있는 기능입니다. 웹페이지가 로드되면 브라우저는 다양한 리소스를 서버에 요청하게 되는데 이중에서 먼저 받아야 하는 리소스가 있습니다. 예를 들어 화면 상단에 떠야하는 이미지라면 하단에 있는 이미지보다 먼저 받는 것이 사용자가 페이지가 빨리 떴다고 느끼는데 도움이 됩니다. 실제 Cloudflare에서도 테스트 예제로 사용한 사이트는 JavaScript 파일이 다운로드 되고 JS 파일은 다운로드 되자 마자 브라우저가 실행하기 때문에 이 실행중에는 다른 렌더링이 지연되게 됩니다. 이 때문에 화면에 보여져야 하는 이미지 다운로드가 지연되고 이후 이 이미지가 로드되기 때문에 코어 웹바이탈 중 하나인 LCP(Largest Contentful Pain)에 영향을 주었는데 HTTP/3의 Prioritizaion을 사용해서 JS 파일보다 이미지를 먼저 다운받게 해서 LCP를 37%나 개성할 수 있었다고 합니다. HTTP/3 Prioritizaion은 HTTP/2와 유사하게 브라우저가 요청에 우선순위를 지정해서 전송하면 서버가 이에 따라 응답을 보내는 방식으로 동작하지만 구현은 달라져서 이식이 더 쉬워졌습니다. Prioritizaion 지정은 Urgency와 Incremental 2개의 값으로 보내게 되는데 Urgency는 0~7의 숫자를 사용하는데 0이 가장 중요하고 기본값은 3입니다. Incremental은 불리언 값으로 기본값은 false인데 이 값을 true로 하면 스트리밍으로 응답을 받을 수 있다는 의미가 됩니다. 헤더에 priority = u=0,i 처럼 지정해서 요청을 보낼 수 있고 PRIORITY_UPDATE 프레임에 해당 값을 지정해서도 보낼 수 있습니다. https://blog.cloudflare.com/better-http-3-prioritization-for-a-faster-web/

알림

알림이 없습니다