그림 하나가 어떻게 셀 수 있는가
이 글의 내용
눈에 보이는 웹 카운터 뒤의 장치는 인터넷 통신의 근본 원리인 요청과 응답으로 돕니다. 웹페이지가 불릴 때마다 브라우저는 소스 코드를 읽고 스타일시트, 글꼴, 그림 같은 외부 요소에 대한 참조를 찾아냅니다.
완전한 페이지를 조립하려면 브라우저는 그 요소들을 품은 서버에 하나씩 닿아 청해야 합니다. 바로 그 과정이 복잡한 추적 스크립트에 기대지 않고 방문을 세는 바탕이 됩니다.
그림 태그 하나를 페이지에 넣으면 페이지가 보일 때마다 의도된 요청이 생깁니다. 그 요청을 받는 서버는 그저 정적인 파일을 건네지 않습니다. 사건을 기록하고, 계산하고, 그다음에야 그림을 내보냅니다.
대기실의 번호표 기계
물리적 세계에서 가져올 만한 비유는 많은 대기실에 있는 번호표 기계입니다. 그 기계에는 번호가 적힌 종이 조각 두루마리가 들어 있습니다. 방문자가 조각을 뽑으면 두 가지가 동시에 일어납니다. 방문자가 번호를 받고, 기계는 다음 번호로 나아가며 또 한 사람이 왔다는 것을 기록합니다.
눈에 보이는 카운터도 꼭 그렇게 굽니다. 웹사이트의 그림 태그가 조각을 뽑는 손입니다.
서버가 그 기계입니다. 뽑음을 기록하고, 요청의 시각과 출처를 적고, 안쪽 셈을 하나 올리고, 그다음 새 번호를 디지털 조각에 찍습니다. 그 조각이 마침내 화면에 나타나는 그림입니다.
배경에서 일어나지 않는 일
이 방식은 현대의 무거운 분석 플랫폼과 크게 다릅니다. 그런 플랫폼은 브라우저에게 방대한 프로그램 코드를 내려받아 실행하라고 요구하고, 그 코드가 방문자의 행동을 지켜보다 배경에서 조용히 보고합니다.
순수하게 그림에 기반한 카운터는 그것을 통째로 건너뜁니다. 브라우저는 그저 그림을 청합니다. 계수 논리 전체가 멀리 서버에서, 브라우저의 제한이나 없는 스크립트 권한이 닿지 않는 곳에서 일어납니다.
배경에서 지켜보는 것이 없으므로 그 장치는 본디 가볍게 남습니다. 데이터 주고받음은 처음의 요청과 보통 몇 킬로바이트에 지나지 않는 작은 그림 파일의 전달로만 이루어집니다.
그림은 그 자리에서 그려집니다
끝내 화면에 도착하는 그림은 실시간으로 만들어집니다. 폴더에 놓여 있던 미리 그려 둔 그림이 아닙니다.
대신 서버가 고른 디자인 카탈로그에서 빈 서식을 꺼내고, 방금 올린 셈에 맞는 숫자를 고르고, 그것을 배경 위에 그립니다. 그 모두가 페이지를 보는 사람이 전혀 알아채지 못하는 사이 1초의 몇 분의 일 만에 일어납니다.
완성된 그림은 표준 그림 헤더와 함께 전달되므로 브라우저는 그것을 여느 사진과 똑같이 다룹니다. 그 매끄러운 어우러짐 덕분에 계수 과정이 웹사이트의 실제 내용을 결코 방해하지 않고, 웹의 표준 작동만으로 믿음직한 셈을 줍니다.
서버에서 만들기 때문에 디자인은 어떤 보기 환경에서도 완전히 한결같이 남습니다. 파일이 서버를 떠나기 전에 숫자가 그림의 픽셀 안에 물리적으로 그려지므로, 없는 글꼴을 걱정할 일이 없습니다.