JavaScript heredado
Silktide comprueba si tu página envía código adicional cuyo único propósito es admitir navegadores muy antiguos. Los navegadores modernos no lo necesitan, así que para casi todos los visitantes supone tiempo de descarga y de procesamiento desperdiciado.
Cuando se prepara para su publicación, las herramientas de compilación a menudo añaden polyfills (sustitutos de funciones que faltan en navegadores antiguos) y transformaciones (reescrituras de sintaxis moderna a equivalentes antiguos). Si se configuran para navegadores que prácticamente han desaparecido, pueden añadir una carga inútil considerable a cada carga de página.
Por qué es importante
La inmensa mayoría de visitantes usan navegadores que se actualizan solos y admiten JavaScript moderno de forma nativa. El código de compatibilidad heredado hace que todos paguen —en tiempo de descarga, datos móviles y tiempo de procesamiento— por la compatibilidad con navegadores que puede que no representen nada de tu tráfico real.
El coste es fácil de pasar por alto porque nada parece estar mal: el sitio funciona en todas partes. Simplemente es más lento de lo necesario, en cada página, para todo el mundo.
Cómo solucionarlo
Esta es una corrección de configuración de compilación para tus desarrolladores:
- Configura los objetivos de compatibilidad de la compilación según los navegadores que tus visitantes realmente usan, en lugar de un valor heredado que haya quedado desfasado. La mayoría de las herramientas de compilación leen esto de una declaración de compatibilidad de navegadores en el proyecto.
- Elimina las importaciones generales de polyfills que arrastran compatibilidad para todo y deja que la compilación incluya únicamente lo que realmente necesitan tus navegadores objetivo.
- Si aún debe admitirse algún navegador heredado, sirve dos compilaciones - una moderna para los navegadores actuales y otra heredada solo para los que la necesiten - en lugar de enviar la compilación heredada a todo el mundo.
Cómo lo prueba Silktide
- Carga la página en un navegador real, usando el tipo de dispositivo, la velocidad de conexión y la ubicación de la prueba configurados para tus pruebas de velocidad.
- Examina el JavaScript que la página descarga en busca de polyfills y transformaciones de sintaxis conocidas que los navegadores modernos no necesitan.
- Informa de cada archivo que contenga código heredado, con el tamaño de descarga que podría ahorrarse.
- Califica la página por el tamaño total desperdiciado: alrededor de 30 KB de código heredado reduce la calificación, y 100 KB o más se califica como deficiente.
Solución de problemas
Todavía necesitamos admitir navegadores antiguos
Pregúntate si tus visitantes realmente los usan: tu analítica te lo dirá. Si de verdad algunos lo hacen, el patrón module/nomodule te permite servir el código heredado solo a los navegadores que lo necesitan, para que los modernos dejen de pagar el coste.
El código heredado está en un script de terceros
Los scripts de otros proveedores pueden incluir su propia sobrecarga heredada, que no puedes reconstruir. Comprueba si el proveedor ofrece una compilación moderna y valora el beneficio del script frente a su coste.