Pembengkakan ukuran JavaScript pada 2024
(tonsky.me)Masalah ukuran JavaScript
- Saya agak kurang mengikuti perkembangan frontend modern, dan ingat pernah membaca artikel tentang ukuran web yang membengkak hingga beberapa megabita per halaman.
- Saya mendapat kesan bahwa jika ukuran rata-rata halaman web adalah 3MB, maka bundle JavaScript kira-kira sekitar 1MB.
- Untuk memeriksa seberapa besar sebenarnya, saya melakukan eksperimen.
Metode
- Menggunakan Firefox di macOS (kemungkinan akan sama di browser lain)
- Mode biasa, bukan mode penyamaran (karena saya ingin melihat angka di dalam aplikasi, dan merasa ini lebih mendekati pengalaman nyata)
- Semua ekstensi dinonaktifkan
- Hanya mengukur JavaScript
- Dalam keadaan tidak dikompresi
- Service worker diaktifkan (agar situasinya lebih realistis)
- Semua cache dinonaktifkan (memuat dari awal)
Halaman landing
- Contoh halaman umum dengan sedikit interaksi: Wikipedia, 0.2MB
- Contoh halaman yang agak membengkak: Linear, 3MB
- Contoh halaman landing yang buruk: Zoom, 6MB; Vercel, 6MB; Gitlab, 13MB
Situs web yang sebagian besar statis
- Sulit dibuat lebih sederhana daripada sekadar menampilkan dinding teks statis.
- Medium tetap membutuhkan 3MB hanya untuk itu.
- Substack membutuhkan 4MB, Quora 4.5MB, Pinterest 10MB, dan Patreon 11MB.
Pencarian
- Interaksi utama aplikasi terbatas pada pencarian.
- StackOverflow membutuhkan 3.5MB, NPM 4MB, Airbnb 7MB, dan Booking.com 12MB.
- Google membutuhkan 9MB hanya untuk menampilkan satu kolom teks sederhana dan daftar tautan.
Aplikasi dengan satu interaksi utama
- Google Translate membutuhkan 2.5MB untuk dua kotak teks.
- ChatGPT membutuhkan 7MB untuk satu kotak teks.
Video
- Loom membutuhkan 7MB, YouTube 12MB.
- Pornhub, sebagai situs yang peduli pada performa, hanya membutuhkan 1.4MB.
Audio
- SoundCloud dan Spotify sama-sama membutuhkan 12MB.
- Google Mail membutuhkan 20MB.
- FastMail menawarkan fungsi yang sama, tetapi hanya membutuhkan 2MB.
Produktivitas
- Todoist membutuhkan 9MB, Dropbox 10MB, 1Password 13MB, dan Trello 13.5MB.
- Discord membutuhkan 21MB hanya untuk chat.
Pengeditan dokumen
- Google Docs membutuhkan 13.5MB, Notion 16MB.
Jejaring sosial
- Twitter membutuhkan 11MB, Facebook 12MB, TikTok 12.5MB, Instagram 16MB, dan LinkedIn 31MB.
Kategori raksasa
- Jira membutuhkan hampir 50MB, Slack 55MB.
- react.dev mulai dari 2MB pada awalnya, tetapi bisa terus membesar tanpa batas saat digulir.
Apakah makin memburuk dengan cepat?
- Pada 2015, ukuran rata-rata halaman web sudah mendekati versi shareware Doom 1 (2.5MB).
- Pada 2024, Slack mencapai 55MB, yang untuk JavaScript saja setara dengan ukuran Quake 1 asli.
Seberapa besar 10MB itu?
- Sekarang 10MB tidak lagi terasa terlalu besar atau istimewa.
- Dengan asumsi rata-rata 65 karakter per baris, kita mengirimkan sekitar 150.000 baris kode untuk setiap situs web.
- Google Maps adalah 4.5MB, yang relatif sederhana menurut standar modern.
Kesimpulan
- Bukan hanya ukuran unduhan yang menjadi masalah.
- JavaScript harus diparse oleh browser, disimpan di memori, dan dijalankan.
- Saya percaya konten seharusnya lebih besar daripada ukuran kodenya.
- Gitlab membutuhkan 13MB kode, lebih dari 500 ribu LoC JavaScript, hanya untuk menampilkan halaman landing statis.
Pendapat GN⁺:
- Ini adalah diagnosis yang realistis tentang keadaan pengembangan web saat ini, dan membantu memahami dampak ukuran JavaScript situs web terhadap pengalaman pengguna dan performa.
- Ini mengingatkan developer frontend akan pentingnya optimasi, serta menekankan agar tidak menggunakan sumber daya melebihi yang diperlukan.
- Ini menyajikan data menarik yang dapat mendorong diskusi di komunitas developer terkait performa situs web.
1 komentar
Opini Hacker News