Entonces, sí, el tema de mi charla es cuando las optimizaciones salen mal. Se trata de casos en los que logras alguna optimization común pero a su vez, hace que la aplicación sea más lenta, no más rápida.
Entonces primero, hablemos de las CDNs. ¿Quién aquí usa una CDN en producción? Hm, bastantes personas. Bien. Hubo una vez, hace un tiempo, yo era un desarrollador en una gran y compleja aplicación web, y la pestaña era lenta. Las aplicaciones lentas no son agradables, así que tuvimos un proyecto para hacer la aplicación más rápida, y como parte de ese proyecto, decidimos implementar una CDN.
Ahora, una CDN es un servicio que acerca tus archivos al usuario, ¿verdad? Si tu servidor está en los Estados Unidos, y el usuario está en India con una CDN, la solicitud para el paquete no necesita ir todo el camino de vuelta a los Estados Unidos. Puede simplemente ir al servidor CDN más cercano al usuario en India. Entonces nuestro servidor estaba en los Estados Unidos, y nuestros usuarios estaban en todo el mundo. Así que decidimos probar esta optimization. Configuramos los buckets para subir los resultados construidos, configuramos la CDN delante de eso, y apuntamos todas las URLs en la aplicación a ese servidor CDN. Básicamente, nuestro index.html, en lugar de parecerse a esto, empezó a parecerse a esto, con el origen de la CDN delante de todas las URLs.
Hasta ahora todo bien, ¿verdad? Pero cuando ejecutamos las pruebas de performance, descubrimos que de repente, el sitio se volvió no más rápido, sino más lento. ¿Alguien, por cierto, tiene una idea de por qué? Basándose en las optimizaciones, basándose en el cambio que hicimos, ¿alguien tiene una idea de por qué sucede esto? No hay manos. Bien. Bueno para mí. Así que intentemos investigar esto, como si lo estuviera investigando hoy con el conocimiento y los métodos que tengo ahora.
Entonces, lo importante que hay que saber sobre la puntuación de lighthouse es que no es solo una puntuación de performance abstracta, ¿verdad? Se calcula en base a estas cinco métricas. Si una métrica empeora, toda la puntuación empeora. Si una métrica mejora, toda la puntuación mejora. Incluso hay una calculadora para esto. Ahora, la mayoría de las métricas en estas dos pruebas, antes de agregar una CDN y después de agregar una CDN, se mantuvieron más o menos igual. La Pintura con Contenido de Lars incluso mejoró, lo cual es bueno, pero una métrica, la Primera Pintura con Contenido, empeoró significativamente. Entonces, la Primera Pintura con Contenido es una métrica que mide cuán rápido se renderiza el primer contenido. Es el tiempo desde el momento en que el sitio comenzó a cargar hasta el momento en que el sitio renderizó su primer contenido, y empeoró.
Entonces, siempre que tengo un sitio que tiene mejores velocidades de renderizado, como la Primera Pintura con Contenido o la Pintura con Contenido de Lars, lo que me gusta hacer es mirar el renderizado cuadro por cuadro de ese sitio, la cascada de red de ese sitio, y luego compararlos para intentar averiguar qué demonios ha pasado. Entonces, en este caso, si comparo ambas versiones de este sitio, una sin CDN y una con, notaré dos cosas grandes. La primera es que las respuestas ahora realmente tardan menos tiempo, como se pretendía. Con la CDN, estas pruebas se hicieron desde Canadá, por ejemplo, utilizando webpagetest.org, y con la CDN, este error estaba más cerca de los usuarios, por lo que el viaje de ida y vuelta fue más corto, por lo que el archivo tardó menos tiempo en descargarse que sin CDN.
Comments