- YouTube Embed'leri yaklaşık 1.3 MB boyutunda ve birden fazla embed arasında kaynak paylaşmıyor
<lite-youtube> web component'i kullanıldığında boyut yaklaşık 100k'ya düşüyor, kaynaklar paylaşılıyor ve işlevlerden ödün verilmiyor
YouTube video embed'i
- YouTube videoları bir web sitesine embed edilebilir
- YouTube'un Share menüsünden < > Embed seçeneği seçildiğinde, içinde
<iframe> bulunan HTML kodu verilir
<iframe> performans açısından iyi değildir, ancak korumalı üçüncü taraf içerikler için uygundur
Performansı iyileştirme önerileri
- Video görünmüyorken hemen yüklenmemesi için
loading="lazy" niteliği eklenebilir
- Videonun özgün en-boy oranını korumak ve akışkan hale getirmek için satır içi stiller eklenebilir
Mevcut YouTube Embed'inin sorunları
- Tek bir YouTube Embed'i bulunan bir sayfada 32 istek, 1.3 MB veri aktarımı ve 2.76 saniye yükleme süresi görülüyor
- Birden fazla embed arasında kaynak paylaşılmadığı için, embed sayısı arttıkça veri aktarımı doğrusal olarak artıyor
Görünüm ve işlev
- YouTube Embed'i videonun "poster" görselini, video başlığını ve büyük oynat düğmesini sunuyor
- Bu özellikler çok fazla kaynak kullanmadan da uygulanabilir
Neden bu şekilde?
- Hafif embed'ler test edilmiş, ancak etkileşimin azaldığına dair raporlar var
- Ancak bu sonuç sezgiye aykırı görünüyor ve daha derin bir inceleme gerektiriyor
- Çok fazla kaynak kullanımı çevresel açıdan da sorun yaratıyor
Çözüm: embed deneyimini farklı bir şekilde kopyalamak
- Google'dan Paul Irish tarafından oluşturulan
lite-youtube-embed adlı bir web component var
- Bu component görsel performansa odaklanıyor ve yaklaşık 224 kat daha hızlı render ediliyor
- Varsayılan embed ile aynı işlevleri sunarken hız, verimlilik ve varsayılan gizliliği iyileştiriyor
Lite YouTube Embed nasıl kullanılır
- Web component'i başlatan JavaScript'i bağlayın
- Kullanın
- npm üzerinden kurulabilir veya projeye kopyalanarak kullanılabilir
- CDN üzerinden bağlantı verilerek kullanılabilir
Alternatifler
- Shadow DOM sürümü (stil koruması, ancak stil vermesi zor)
- Doğrudan kendiniz uygulamak
- Raymond Camden: YouTube Embed web component'i oluşturma (vanilla ve WebC sürümleri)
- Adrian Roselli: YouTube ve Vimeo web component'leri
- Mux:
<youtube-video> (DOM API ile uyumlu)
- React portu ve Next.js resmi sürümü
GN⁺ özeti
- YouTube Embed'leri çok fazla kaynak kullanarak performansı olumsuz etkiliyor
lite-youtube-embed gibi web component'ler kullanılarak performans büyük ölçüde iyileştirilebilir
- Çevresel açıdan da olumlu bir etki yaratabilir
- Benzer işlevler sunan diğer web component'ler de değerlendirmeye değer
2 yorum
lite-youtube-embed - daha hızlı YouTube embed'i
Hacker News yorumları
Topluluk forumu platformlarında YouTube gömmelerini algılayıp, tıklanana kadar yüklenmeyen proxy küçük resimlerle değiştiriyorum
Yazar, hafif sürümün etkileşimi azalttığına inanmıyor
Farklı oynatıcıların kullanıcılar tarafından farklı algılanması şaşırtıcı değil
Bu, geliştiricilerin kullanıcıların yazılımı nasıl kullandığını tam olarak bilemeyeceğine dair yanlış inanca bir örnek
Blog yazarlarının GitHub Gist gömmelerini kullanmaması için baskı yapılması gerekiyor
Gömmelerin toplam ağırlığını azaltmanın ve UX'i iyileştirmenin bir yolu reklamları engellemektir
uBlock kullanıcıları için istemci tarafı bir çözüm olarak click 2 load kullanılabilir
Hafif gömmelerin etkileşimi azalttığını gösteren test sonuçları var
Gömülü video, YouTube sunucularındaki dosyayı işaret eden bir
<video>öğesi olabilirdiGömme sayısı arttıkça toplam ağırlık doğrusal olarak artıyor
lite youtube embed'e alternatif olarak kendi çözümümü paylaşıyorum