-
웹사이트 크기를 14kB 이하로 유지하면 15kB일 때보다 로딩 속도를 크게 단축할 수 있음
- 이 현상은 TCP 슬로우 스타트 알고리듬에 의해 발생하며, 첫 데이터 전송량 한계로 인해 체감 속도 차이가 나타남
- 14kB는 대부분의 서버가 처음에 보내는 10개 TCP 패킷의 용량에 해당함
- 위성 인터넷 등 높은 레이턴시 환경에서는 한 번의 추가 왕복(RTT)이 612ms 이상의 지연을 초래함
- 실제로 14kB 미만으로 주요 콘텐츠를 넣거나, 첫 14kB 내에 중요한 리소스를 배치하는 것이 웹 성능 최적화에 효과적임
개요 및 주요 원리
-
웹사이트의 크기가 작을수록 빨리 로드된다는 점은 잘 알려진 사실임
- 하지만 14kB에서 15kB로 넘어가는 순간, 첫 응답 속도에서 획기적 차이가 발생하는 점은 예상치 못한 사실임
-
15kB와 16kB 페이지 사이의 속도 차이는 미미하지만, 14kB와 15kB 사이에는 최대 612ms 차이가 생길 수 있음
TCP란 무엇인가
-
Transmission Control Protocol (TCP) 는 IP(Internet Protocol) 위에서 작동하며, 패킷의 신뢰성 보장을 담당함
- 웹 브라우저는 HTTP 요청 시 여러 개의 TCP 패킷을 전송함
- IP만 사용할 때는 패킷이 도착했는지 확인할 수 없어서, TCP가 패킷 수신 확인(ACK) 기능을 제공함
-
서버는 소량의 패킷을 먼저 보내고, 브라우저에서 ACK를 받으면 추가 패킷을 전송함
- ACK가 없을 경우, 패킷 재전송 절차가 실행됨
TCP 슬로우 스타트란
-
TCP 슬로우 스타트는 서버가 네트워크 연결 품질(대역폭)을 파악하기 위해 단계적으로 패킷 전송량을 늘려가는 알고리듬임
- 접속 초기에 서버는 소량(일반적으로 10개)의 패킷만 전송함
- 방문자 컴퓨터에서 ACK를 정상적으로 보내면 패킷 전송량을 두 배로 증가시킴
- ACK 누락이 발생하면 이후에는 느린 속도로 패킷을 보냄
- 실제 알고리듬은 구현마다 세부 차이가 있지만 개념은 동일함
14kB 기준의 근거
- 대부분의 서버는 슬로우 스타트에서 TCP 패킷 10개를 한 번에 보냄
- TCP 패킷 최대 크기는 1500바이트이지만, 헤더(40바이트) 를 제외하면 1460바이트가 실질 데이터임
- 따라서 10 x 1460 = 14600바이트(약 14kB) 가 첫 전송 극한치임
- 웹사이트 또는 중요한 리소스를 14kB 이하(압축 적용 시는 원본 데이터 수십 kB 수준)에 맞추면, 시작 왕복 지연 없이 표시 가능함
한 번의 왕복이 얼마나 큰 지연을 유발하는가
위성 인터넷 예시
- 높은 레이턴시 환경의 대표 예로 위성 인터넷(석유 시추선, 유람선 등) 사용자가 있음
- 휴대폰에서 홈페이지 요청 시, 라우터 → 위성 안테나 → 우주 위성 → 지상국 → 서버, 각 구간 이동에 수십~수백 ms 소요됨
- 전체 전송 왕복에는 두 번의 우주 왕복, 네트워크 구간 이동, 서버 처리까지 포함해 약 612ms의 추가 지연 발생함
-
HTTPS를 사용할 경우, 추가 핸드셰이크로 인해 1836ms까지 늘어날 수 있음
육상 네트워크의 레이턴시
- 2G, 3G 등 모바일 네트워크에서도 100~1000ms까지 레이턴시가 발생함
- 혼잡한 상황이나 서버 과부하, 패킷 손실 등 다양한 환경에서 추가 지연이 생길 수 있음
14kB 규칙을 적용한 웹사이트 최적화 전략
- 웹사이트나 페이지를 가능한 한 작게 만드는 것이 핵심임
- 각 페이지의 압축된 전송량이 14kB 이하가 되도록 설계하는 것이 이상적임
- 압축 적용 시 실제 콘텐츠는 ~50kB까지 포함 가능
- 자동재생 동영상, 팝업, 추적기, 불필요한 JS/CSS 등 대부분의 불필요 요소를 줄이면 충분히 달성 가능함
- 만약 14kB로 전체 구현이 어렵다면, 첫 14kB에 핵심 리소스 및 주요 콘텐츠(CSS, JS, 주요 텍스트 등)를 우선 배치하는 것이 중요함
-
HTTP 헤더(압축 불가) , 이미지(필요 최소한/위치한 부분만 로딩 또는 플레이스홀더 적용)도 14kB 내에 포함됨
14kB 규칙의 예외와 최신 프로토콜 이슈
- 14kB 규칙은 지나친 일반화는 아니지만, 몇 가지 예외 사항 존재함
- 일부 서버는 초기 윈도우를 30패킷으로 확장함
-
TLS 핸드쉐이크를 통해 더 큰 윈도우 허용 가능성 있음
- 라우트별로 전송 가능 패킷 수를 캐싱하여 다음 접속 시 더 많이 보낼 수 있음
- HTTP/2에서도 서버가 TCP 슬로우 스타트로 10 패킷부터 시작하는 관행은 대체로 변하지 않음
-
HTTP/3, QUIC에서도 14kB 규칙이 공식적으로 권장됨
요약 및 참고 자료
- 기술적 근거와 추가 설명 자료들은 각 링크를 통해 확인 가능함
- 최초 발행: 2022-08-25, 최근 수정: 2022-08-26, 작성자: Nathaniel, 관련 태그: 웹 성능, HTTP, TCP
참고 링크
- Ethernet 프레임과 TCP 헤더 구조, 레이턴시 및 대역폭 관련 추가 자료, TCP/QUIC 사양 등