- Embed YouTube berukuran sekitar 1,3MB dan tidak berbagi resource antar-embed
- Dengan menggunakan web component
<lite-youtube>, ukurannya bisa turun menjadi sekitar 100k, berbagi resource, dan tidak mengorbankan fungsi
Embed video YouTube
- Video YouTube bisa di-embed ke dalam situs web
- Di menu Share milik YouTube, jika memilih opsi < > Embed, akan diberikan kode HTML yang berisi
<iframe>
<iframe> kurang baik untuk performa, tetapi cocok untuk konten pihak ketiga yang terlindungi
Usulan untuk meningkatkan performa
- Tambahkan atribut
loading="lazy" agar video tidak langsung dimuat saat belum terlihat
- Tambahkan style inline untuk mempertahankan rasio asli video dan membuatnya fleksibel
Masalah pada Embed YouTube saat ini
- Pada halaman yang hanya memiliki satu Embed YouTube, dibutuhkan 32 request, transfer data 1,3MB, dan waktu muat 2,76 detik
- Karena resource tidak dibagikan antar-embed, jumlah transfer data meningkat secara linear seiring bertambahnya jumlah embed
Tampilan dan fungsi
- Embed YouTube menyediakan gambar "poster" video, judul video, dan tombol putar besar
- Fitur-fitur ini bisa diimplementasikan tanpa menggunakan banyak resource
Mengapa dibuat seperti ini?
- Ada laporan bahwa saat embed ringan diuji, tingkat engagement menurun
- Namun, hasil ini terasa bertentangan dengan intuisi dan perlu ditinjau lebih dalam
- Penggunaan resource yang besar juga menjadi masalah dari sisi lingkungan
Solusi: meniru pengalaman embed dengan cara lain
- Ada web component
lite-youtube-embed yang dibuat oleh Paul Irish dari Google
- Komponen ini berfokus pada performa visual dan merender sekitar 224 kali lebih cepat
- Sambil tetap menyediakan fungsi yang sama seperti embed bawaan, komponen ini meningkatkan kecepatan, efisiensi, dan privasi bawaan
Cara menggunakan Lite YouTube Embed
- Hubungkan JavaScript yang menginisialisasi web component
- Gunakan
- Bisa dipasang dari npm atau disalin ke dalam proyek
- Bisa juga digunakan dengan menautkannya dari CDN
Alternatif
- Versi Shadow DOM (style terlindungi, tetapi sulit di-style)
- Implementasi sendiri
- Raymond Camden: membangun web component Embed YouTube (versi vanilla dan WebC)
- Adrian Roselli: web component YouTube dan Vimeo
- Mux:
<youtube-video> (sesuai dengan DOM API)
- Port React dan versi resmi Next.js
Ringkasan GN⁺
- Embed YouTube menggunakan banyak resource sehingga berdampak negatif pada performa
- Dengan web component seperti
lite-youtube-embed, performa bisa ditingkatkan secara signifikan
- Ini juga bisa memberi dampak positif bagi lingkungan
- Web component lain dengan fungsi serupa juga layak dipertimbangkan
2 komentar
lite-youtube-embed - embed YouTube yang lebih cepat
Komentar Hacker News
Di platform forum komunitas, embed YouTube dideteksi lalu diganti dengan thumbnail proksi yang tidak dimuat sampai diklik
Penulis tidak percaya bahwa versi ringan mengurangi engagement
Tidak mengherankan jika pemutar yang berbeda diperlakukan berbeda oleh pengguna
Ini contoh keyakinan keliru bahwa developer bisa tahu persis bagaimana pengguna memakai software
Blogger perlu dipaksa untuk tidak memakai embed GitHub Gist
Salah satu cara mengurangi bobot total embed dan memperbaiki UX adalah dengan memblokir iklan
Sebagai solusi sisi pengguna untuk pengguna ublock, bisa memakai click 2 load
Ada hasil pengujian bahwa embed ringan memang mengurangi engagement
Video yang di-embed sebenarnya bisa berupa elemen
<video>yang menunjuk ke file di server YouTubeSemakin banyak jumlah embed, semakin bobotnya bertambah secara linear
Sebagai alternatif untuk lite youtube embed, saya membagikan solusi saya