Server Push
Server Push는 예측 전송이지만 운영 현실은 제한적이었다
서버는 HTML 응답 중 PUSH_PROMISE로 CSS나 JS를 미리 예약하고 보낼 수 있다. 그러나 캐시 중복과 예측 실패 때문에 현대 브라우저 생태계에서는 사용이 크게 줄었다.
프로토콜에는 PUSH_PROMISE와 promised stream이 정의됨
클라이언트는 SETTINGS_ENABLE_PUSH=0 또는 RST_STREAM으로 거절
가능
실제 웹에서는 103 Early Hints, preload, 캐시 전략이 더 자주
쓰임
ClientGET /index.html
->
ServerHTML 분석 전 필요한 리소스 예측
->
PUSH_PROMISE/style.css, /app.js
Stream 1
HTML HEADERS
PUSH_PROMISE
HTML DATA
END
Stream 2
CSS HEADERS
CSS DATA
END
Stream 4
JS HEADERS
JS DATA
DATA
END
장점왕복 지연 감소 의도
클라이언트가 요청하기 전에 필요한 리소스를 보낼 수 있다.
문제예측 실패와 캐시 중복
이미 캐시된 리소스를 밀어 보내면 대역폭을 낭비한다.
현실브라우저 지원 축소
프로토콜 기능과 실제 웹 플랫폼 지원은 구분해서 봐야 한다.