테크레시피

웹사이트 파일 크기 14kB 이하로 해야 하는 이유?

웹사이트를 구축하면서 파일 크기가 작을수록 로딩을 빨리 할 수 있다는 건 잘 알려진 사실이다. 한 웹사이트 개발자가 파일 크기를 14kB 이하로 해야 한다며 왜 15, 16kB가 아니라 14kB인지에 대해 해설해 눈길을 끈다.

14kB를 불러오면 612밀리초 빠르게 로딩할 수 있는 반면 15kB 페이지나 16kB 페이지 차이는 크지 않다고 한다. 이는 데이터 패킷을 높은 신뢰로도 통신하는 TCP 슬로우 스타트 알고리즘에 원인이 있다고 한다.

브라우저가 서버에 연결해 데이터 전송을 시작할 때 서버는 초당 얼마나 많은 데이터를 전송해야 하는지 파악할 수 없다. 혼잡할 수 있는 네트워크에 많은 데이터를 전송하는 걸 방지하기 위해 서버는 먼저 안전한 양의 데이터를 전송한다. 보통 TCP 패킷 10개가 전송된다고 한다.

이 패킷이 사이트 방문자에게 도달하면 방문자 PC는 패킷을 받았다는 확인 응답, ACK를 반환한다. 서버는 이를 받은 뒤 한층 더 데이터를 되돌려 보내지만 이 때 패킷량은 2배가 된다. 이 프로세스가 반복되고 패킷이 방문자가 표시한 창 크기에 가까워지고 서버가 ACK를 받지 못할 때까지 데이터가 송수시된다. 이처럼 처음부터 전 데이터를 보내는 게 아니라 서서히 전송량을 올려가는 방법이 바로 TCP 슬로우 스타트다.

14kB라는 수치는 TCP 패킷 크기에서 유래한다. 한 TCP 패킷 크기는 1500바이트이며 이 중 40바이트는 패킷 헤더에 사용된다. 나머지는 1460바이트다. 슬로우 스타트에선 첫 패킷 10개가 송신되기 때문에 1460×10-1만 4,600바이트 그러니까 14kB가 된다. 다시 말해 웹사이트 전체 또는 웹사이트 내 중요한 리소스만 14kB에 담을 수 있다면 사이트 방문자와 사이트 서버간 통신을 최소화할 수 있다.

하지만 일부 서버는 슬로우 스타트를 할 때 패킷수를 30으로 늘린 것도 있고 TLS 핸드셰이크를 이용해 더 큰 창 크기를 준비하고 더 많은 패킷을 통신을 시작한다. 따라서 14kB가 반드시 옳다고 말할 수는 없다는 지적이다.

자동 재생 영상이나 팝업, 쿠키, 동의 배너, 소셜네트워크 버튼, 추적 스크립트, 자바스크립트와 CSS 프레임워크, 기타 누구도 좋아하지 않는 쓰레기를 제거하면 아마 축소 가능할 것이라며 사이트 구축자는 방문자를 위해 웹사이트는 가능하면 용량을 작게 만들어야 한다고 말한다. 관련 내용은 이곳에서 확인할 수 있다.

추천기사