Qué pasa en el medio segundo entre que pulsas Enter y ves la página

Escribes una dirección, pulsas Enter y medio segundo después estás leyendo. Parece que la página ya estaba ahí y solo hubo que traerla. En realidad, en ese medio segundo pasaron seis cosas seguidas, cada una con su propio retraso, y la mayoría no tienen que ver con el sitio que visitas.
Este es el recorrido. No hace falta programar para seguirlo, y si programas quizá te sirva para saber dónde mirar la próxima vez que algo vaya lento.
Uno: ¿dónde queda esa dirección?
Una dirección web es un nombre. La red no entiende nombres, entiende números, algo parecido a 172.67.150.20. Traducir el nombre al número es trabajo del DNS, que funciona como las páginas amarillas: preguntas por un nombre y te devuelven el número.
La gracia está en que la respuesta se guarda. Tu computador la recuerda un rato, el router también y el proveedor de internet igual. Por eso la primera visita del día cuesta 20 o 30 milisegundos y las siguientes salen gratis.
Dos: presentarse y cerrar el sobre
Ya con el número, tu navegador llama a esa máquina. Antes de pedir nada hay dos pasos.
El primero es un saludo de tres mensajes para confirmar que los dos lados están y se escuchan. El segundo monta el cifrado, que es el candado que sale en la barra de direcciones: el servidor enseña un certificado, algo así como una cédula firmada por alguien en quien tu navegador ya confía, y los dos acuerdan una clave para que nadie por el camino pueda leer la conversación.
Cada uno de esos pasos es un viaje de ida y vuelta. Si el servidor está lejos, cada viaje se cobra caro. Al final del artículo vemos cuánto.
Tres: la parte que sí depende de quien hizo el sitio
Aquí el servidor arma la respuesta: mira quién eres, consulta la base de datos, junta el texto y las imágenes. Es el único tramo del recorrido que depende de verdad de cómo esté construido el sitio.
Y casi nunca es la mitad del total. También es el tramo que se dispara cuando el servidor va ocupado, aunque el panel diga que hay CPU de sobra: escribí aparte sobre por qué pasa eso.
Cuatro y cinco: bajar la página y luego todo lo demás
Lo que llega primero es el HTML, que es el texto y la estructura sin adornos. Pesa poco y viaja rápido.
El problema es que ese HTML dice «además necesito estos estilos, este código y estas imágenes». Ahí empieza otra ronda de descargas, muchas veces contra otros servidores: la tipografía, el script de analítica, el chat de soporte, el píxel de publicidad. Cada invitado nuevo trae su propio DNS, su propio saludo y su propio cifrado.
Es la parte que menos se vigila y la que más se infla con el tiempo.
Seis: dibujar
Con todo en la mano, el navegador calcula dónde va cada cosa y lo pinta. Si el texto salta o un botón se mueve justo cuando ibas a pulsarlo, es porque algo llegó tarde y hubo que recolocar la página.
Sumado, en una carga corriente se ve así:

Dicho de otra forma: aunque el servidor responda instantáneo, la página no aparece antes de cierto punto. Hay tramos que no le pertenecen a nadie del equipo que hizo el sitio.
Por qué la segunda visita es instantánea
Casi nada de lo anterior se repite si el sitio está bien montado, porque la respuesta queda guardada en varios sitios a la vez.

Tu navegador se queda con las imágenes y los estilos. Y antes de llegar al servidor hay una red de copias repartidas por el mundo, un CDN, que guarda la página en una ciudad cerca de ti. La mayoría de las visitas se resuelven ahí y nunca tocan la base de datos.
Cuando alguien dice «hay que purgar la caché» está diciendo justo esto: quedaron copias viejas repartidas por el camino y hay que avisarles.
El límite que no se puede optimizar
Queda una parte que no depende de nadie. La información viaja por fibra a unos 200.000 kilómetros por segundo, dos tercios de la velocidad de la luz.

Ir y volver desde Bogotá hasta un servidor en Fráncfort son 90 milisegundos en el mejor de los casos, y en la práctica se suele medir el doble, porque el cable no va en línea recta y hay equipos por el camino. Ningún truco de programación arregla eso. Por eso existen los CDN: la única forma de recortar distancia es poner una copia más cerca.
Un sitio rápido casi nunca lo es por tener máquinas grandes. Lo es por pedir menos cosas y por tenerlas más cerca.
Lo que se puede sacar de todo esto
- Si una página va lenta, no siempre es «el servidor». Puede ser el DNS, la distancia o los treinta invitados que trae la página.
- Cada script de terceros que se añade tiene un costo, y lo pagan todas las visitas, no solo la tuya.
- La primera visita y la segunda no se parecen en nada. Cuando alguien te enseñe una medición, pregunta cuál de las dos es.
- Antes de comprar más servidor, mira cuántas cosas está pidiendo la página. Suele salir más barato quitar que ampliar.
La próxima vez que una página tarde, ya sabes que hay seis tramos donde mirar. Casi siempre el culpable es uno solo, y casi nunca el que uno cree.