- Os embeds do YouTube têm cerca de 1,3 MB e não compartilham recursos entre vários embeds
- Usar o web component
<lite-youtube> reduz isso para cerca de 100 kB, compartilha recursos e não sacrifica funcionalidades
Embed de vídeo do YouTube
- É possível incorporar vídeos do YouTube em um site
- No menu Share do YouTube, ao selecionar a opção < > Embed, é fornecido um código HTML com
<iframe>
<iframe> não é bom para desempenho, mas é adequado para conteúdo protegido de terceiros
Sugestões para melhorar o desempenho
- Adicionar o atributo
loading="lazy" para que o vídeo não seja carregado imediatamente quando não estiver visível
- Adicionar estilos inline para manter a proporção original do vídeo e deixá-lo responsivo
Problemas do embed atual do YouTube
- Em uma página com apenas um embed do YouTube, são necessárias 32 requisições, 1,3 MB de transferência de dados e 2,76 segundos de carregamento
- Como os recursos não são compartilhados entre vários embeds, o volume de dados transferidos cresce linearmente à medida que o número de embeds aumenta
Aparência e funcionalidade
- O embed do YouTube fornece a imagem de "pôster" do vídeo, o título do vídeo e um grande botão de reprodução
- Esses recursos podem ser implementados sem consumir muitos recursos
Por que é assim?
- Há relatos de que embeds mais leves foram testados, mas reduziram o engajamento
- Porém, esse resultado contraria a intuição e precisa de uma análise mais profunda
- O uso intenso de recursos também é um problema ambiental
Solução: replicar a experiência de embed de outra forma
- Existe o web component
lite-youtube-embed, criado por Paul Irish, do Google
- Esse componente foca em desempenho visual e renderiza cerca de 224 vezes mais rápido
- Ele oferece as mesmas funções do embed padrão, ao mesmo tempo em que melhora velocidade, eficiência e privacidade padrão
Como usar o Lite YouTube Embed
- Vincule o JavaScript que inicializa o web component
- Use-o
- É possível instalar via npm ou copiar para o projeto
- Também é possível usar por meio de link via CDN
Alternativas
- Versão com Shadow DOM (protege estilos, mas dificulta a estilização)
- Implementação própria
- Raymond Camden: criação de web component para embed do YouTube (versões em vanilla e WebC)
- Adrian Roselli: web components para YouTube e Vimeo
- Mux:
<youtube-video> (compatível com a DOM API)
- Port para React e versão oficial para Next.js
Resumo do GN⁺
- Os embeds do YouTube consomem muitos recursos e impactam negativamente o desempenho
- Usar web components como
lite-youtube-embed pode melhorar bastante o desempenho
- Também pode haver um impacto positivo do ponto de vista ambiental
- Vale considerar outros web components com funcionalidades semelhantes
2 comentários
lite-youtube-embed - incorporação do YouTube mais rápida
Comentários do Hacker News
Em plataformas de fóruns comunitários, detecta-se embeds do YouTube e eles são substituídos por miniaturas em proxy que não carregam até o clique
O autor não acredita que uma versão leve reduza o engajamento
Não é surpreendente que outros players tratem o usuário de forma diferente
Este é um exemplo da crença equivocada de que desenvolvedores não conseguem saber exatamente como os usuários usam o software
É preciso forçar blogueiros a não usarem embeds do GitHub Gist
Uma forma de reduzir o peso total dos embeds e melhorar a UX é bloquear anúncios
Como solução do lado do usuário para quem usa uBlock, pode-se usar click 2 load
Há resultados de testes mostrando que embeds leves reduzem o engajamento
Um vídeo embutido poderia ser um elemento
<video>apontando para arquivos nos servidores do YouTubeÀ medida que o número de embeds aumenta, o peso cresce linearmente
Compartilho minha solução como alternativa ao lite youtube embed