- Los embeds de YouTube pesan alrededor de 1.3 MB y no comparten recursos entre múltiples embeds
- Al usar el componente web
<lite-youtube> se reduce a unos 100 kB, se comparten recursos y no se sacrifican funciones
Embed de videos de YouTube
- Se pueden incrustar videos de YouTube en un sitio web
- En el menú Share de YouTube, al elegir la opción < > Embed, se proporciona código HTML que incluye un
<iframe>
- Un
<iframe> no es bueno para el rendimiento, pero sí es adecuado para contenido protegido de terceros
Sugerencias para mejorar el rendimiento
- Agregar el atributo
loading="lazy" para evitar que el video se cargue de inmediato cuando no está visible
- Agregar estilos inline para mantener la proporción original del video y hacerlo fluido
Problemas del embed actual de YouTube
- En una página con un solo embed de YouTube se generan 32 solicitudes, 1.3 MB de transferencia de datos y 2.76 segundos de carga
- Como no se comparten recursos entre múltiples embeds, la transferencia de datos aumenta linealmente a medida que crece la cantidad de embeds
Apariencia y funciones
- El embed de YouTube ofrece la imagen "poster" del video, el título del video y un gran botón de reproducción
- Estas funciones pueden implementarse sin consumir tantos recursos
¿Por qué se hace así?
- Se ha reportado que se probaron embeds ligeros, pero que el nivel de interacción bajó
- Sin embargo, ese resultado va contra la intuición y necesita una revisión más profunda
- Consumir tantos recursos también es problemático desde el punto de vista ambiental
Solución: replicar la experiencia del embed de otra manera
- Existe el componente web
lite-youtube-embed, creado por Paul Irish de Google
- Este componente se enfoca en el rendimiento visual y renderiza aproximadamente 224 veces más rápido
- Ofrece las mismas funciones que el embed predeterminado, pero mejora la velocidad, la eficiencia y la privacidad por defecto
Cómo usar Lite YouTube Embed
- Conectar el JavaScript que inicializa el componente web
- Usarlo
- Se puede instalar desde npm o copiarlo al proyecto para usarlo
- También se puede usar enlazándolo desde un CDN
Alternativas
- Versión con Shadow DOM (protege estilos, pero dificulta aplicar estilos)
- Implementación propia
- Raymond Camden: crear un componente web para YouTube Embed (versiones vanilla y WebC)
- Adrian Roselli: componentes web para YouTube y Vimeo
- Mux:
<youtube-video> (alineado con la DOM API)
- Port para React y versión oficial para Next.js
Resumen de GN⁺
- Los embeds de YouTube consumen muchos recursos y afectan negativamente el rendimiento
- Usar componentes web como
lite-youtube-embed puede mejorar mucho el rendimiento
- También puede tener un impacto positivo desde el punto de vista ambiental
- Vale la pena considerar otros componentes web que ofrecen funciones similares
2 comentarios
lite-youtube-embed - una incrustación de YouTube más rápida
Opiniones en Hacker News
En una plataforma de foros comunitarios, detectan los embeds de YouTube y los reemplazan por miniaturas proxy que no cargan hasta que se hace clic
El autor no cree que una versión ligera reduzca la interacción
No sorprende que a los usuarios les resulte distinto otro reproductor
lite-youtube-embedno permite hacer clic hacia la página real de YouTubeEste es un ejemplo de la creencia equivocada de que los desarrolladores no pueden saber exactamente cómo usan los usuarios el software
Habría que evitar que los blogueros usen embeds de GitHub Gist
Una forma de reducir el peso total de los embeds y mejorar la UX es bloquear los anuncios
Como solución del lado del usuario para quienes usan uBlock, se puede usar click 2 load
Hay resultados de pruebas que muestran que los embeds ligeros reducen la interacción
Un video embebido podría ser un elemento
<video>que apunte a archivos en los servidores de YouTubeA medida que aumenta la cantidad de embeds, el peso crece de forma lineal
Comparto mi solución como alternativa a lite youtube embed