¿Cómo podríamos cuantificar el rendimiento de la página web? Probablemente una de las primeras métricas ha sido el tiempo hasta el primer byte. Mediríamos cuánto tiempo tarda en llegar el primer byte desde el servidor a nuestro ordenador o dispositivo y en realidad el navegador puede entonces empezar a analizar y eventualmente renderizar la página.
Y históricamente, esto ha tenido mucho sentido. Así, en los sitios web clásicos, como aquí, en este caso de example.com, nuestro navegador haría una solicitud, el servidor web respondería con el HTML, y luego el contenido sería visible en el navegador. Hay grandes diferencias y hay algunas cosas y factores que podemos influir como propietarios y desarrolladores de sitios web para asegurarnos de que esto sigue siendo rápido. Como asegurarnos de que nuestro servidor es rápido, tiene suficiente memoria, tiene suficiente capacidad, tiene un buen ancho de banda de red. También podemos asegurarnos de que el servidor está lo suficientemente cerca, físicamente cerca, porque simplemente lleva tiempo físicamente para que los datos como impulsos eléctricos o de luz viajen. Si estoy aquí en Suiza, el servidor está en Australia, entonces esto podría llevar un tiempo hasta que los datos hayan llegado a Australia y vuelvan. Podría perderse en el camino y entonces tendría que ser retransmitido. Así que esto puede llevar significativamente más tiempo que cuando el servidor está, por ejemplo, en mi propia ciudad, vivo cerca de un centro de datos. Así que tal vez si está ubicado allí, entonces literalmente no lleva tiempo en absoluto. Va a ser realmente, realmente rápido. Y así el tiempo hasta el primer byte será mucho más corto de lo que sería con un servidor en Australia.
Pero, ¿es esta una buena métrica exhaustiva? ¿Es todo lo que necesitamos para cuantificar si un sitio web es rápido y agradable? No. Y eso es en parte porque la arquitectura del sitio web ha cambiado con el tiempo, pero también porque el ancho de banda y las velocidades de conexión no son necesariamente el mayor cuello de botella. Así que vamos a mirar dos sitios web. Abro ambos sitios web en la misma máquina, en la misma ubicación física, al mismo tiempo. Tal vez tengo dos máquinas una al lado de la otra conectadas a la misma conexión a internet, realmente no importa. Voy a A.example.com y B.example.com, y asumimos que estos son servidores completamente separados y aplicaciones web completamente separadas. Así que estas solicitudes salen y A.example.com tarda un rato. Tal vez es como un programa clásico de PHP o Java o Python o Ruby que necesita ejecutarse en el servidor. Tal vez es una aplicación renderizada en el servidor que necesita hablar con un montón de backends y APIs y bases de datos para realmente obtener los datos y luego compilar el HTML antes de enviarlo por el cable, realmente no importa. El punto es que lleva un momento, no importa cuánto dure este momento, simplemente lleva un momento. Mientras que B.example.com, por otro lado, ha recibido la solicitud, responde inmediatamente y el tiempo hasta el primer byte ha llegado. Y es HTML, dice carga este pedazo de JavaScript. Y ahora, al segundo siguiente, B.example.com responde con el HTML completo, ha hecho todas las cosas que necesita hacer en el servidor, y mi navegador me muestra el sitio web, mientras que con B.example.com, no estamos en la etapa en la que obtenemos el App.js, que luego vuelve y probablemente empieza a renderizar o a ejecutar el JavaScript. Una vez que el JavaScript empieza a ejecutarse, descubre, oh, necesitamos hacer este montón de solicitudes de API y estas vuelven, mientras que el navegador todavía no tiene nada sustancial que mostrar al usuario. Ahora, ¿cuál de estos dos sitios web es mejor, más agradable y rápido, según un usuario que mira ambas ventanas del navegador? Bueno, muy claramente, A.example.com, pero si recuerdas, originalmente, según la métrica del tiempo hasta el primer byte, A.example.com era el más lento, tardó más hasta que recibimos el primer byte de la respuesta, pero cuando lo recibimos, la respuesta fue más completa que la otra respuesta. Así que el tiempo hasta el primer byte no es suficiente en estos días y realmente no ha sido una métrica útil. Sigue siendo relativamente útil porque te ayuda, si ves, como, oh mi sitio web es lento y ves que, en realidad, el renderizado en sí es realmente rápido y no tenemos que esperar tanto hasta que las cosas se pintan, es solo el tiempo de conexión y el tiempo que tarda para que los datos vayan por el cable y vuelvan, entonces ese es el cuello de botella que necesitas solucionar y puedes solucionarlo utilizando un CDN o algo así.
Comments