Website kita nge-lag? Gini lho cara Lazy Loading yang bener biar wus!
Pernah nggak sih kita ngerasain loading website yang lambat banget sampai bikin bete? Duh, itu nggak asik banget kan! Website nge-lag itu ibarat jalanan macet parah di jam pulang kerja bikin pusing dan buang buang waktu. Apalagi kalau website kita sendiri yang begitu pasti langsung mikir keras gimana caranya bikin dia jadi wus lagi. Nah salah satu trik jitu yang sering banget kita pakai di Javapixa untuk bikin website jadi ngebut itu namanya Lazy Loading. Tapi tunggu dulu implementasinya nggak cuma asal pasang doang lho ada cara yang bener biar efeknya maksimal. Yuk kita bedah bareng biar website kita makin kenceng!
Kenapa Sih Website Bisa Nge-lag? Mari Kita Pahami Akar Masalahnya
Sebelum kita masuk ke solusi lazy loading kita perlu paham dulu nih kenapa sih website itu bisa nge-lag. Biasanya ada beberapa faktor utama yang bikin website kita lelet. Pertama ukuran file yang gede banget terutama gambar dan video. Kedua terlalu banyak script JavaScript yang harus di-load di awal. Ketiga font yang banyak dan nggak teroptimasi. Keempat request ke server yang terlalu banyak atau respons server yang lambat. Nah dari semua itu gambar dan video sering jadi biang kerok utama yang bikin website teriak minta tolong. Bayangin aja kita buka sebuah halaman yang isinya puluhan foto resolusi tinggi dan video semua langsung di-load bersamaan. Berat banget kan? Itu yang bikin website jadi terseok seok loadingnya.
Dampak dari website yang nge-lag ini juga nggak main main lho. Pengunjung bisa langsung kabur cuma gara gara nunggu loading yang kelamaan. Ini artinya traffic website kita bisa turun drastis. Google juga nggak suka sama website yang lambat karena ini sangat mempengaruhi user experience atau pengalaman pengguna. Kalau website kita lambat ranking SEO kita bisa anjlok apalagi setelah Google makin gencar dengan Core Web Vitals-nya. Rugi banget kan? Nah di sinilah lazy loading hadir sebagai pahlawan super buat kita.
Apa Itu Lazy Loading dan Kenapa Dia Penting Banget?
Secara sederhana lazy loading itu teknik yang menunda pemuatan atau loading suatu resource misalnya gambar atau iframe sampai resource tersebut benar benar dibutuhkan atau akan terlihat oleh pengguna di layar mereka. Jadi daripada semua gambar di halaman kita di-load langsung di awal begitu kita membuka halaman website lazy loading cuma akan memuat gambar yang ada di viewport atau area yang sedang kita lihat aja. Gambar atau video yang ada di bagian bawah atau "below the fold" akan dimuat nanti ketika kita scroll ke bawah dan mendekati area tersebut.
Kebayang kan betapa asiknya ini? Dengan lazy loading browser kita nggak perlu kerja keras di awal memuat semua konten. Dia cuma fokus ke apa yang penting dan terlihat di layar. Ini otomatis akan mengurangi beban awal dan membuat website terasa jauh lebih responsif dan ngebut.
Manfaatnya banyak banget lho kalau kita pakai lazy loading dengan benar. Pertama waktu loading awal halaman kita jadi jauh lebih cepat. Kedua penggunaan bandwidth pengguna jadi lebih efisien karena nggak semua konten diunduh kalau pengguna nggak scroll sampai bawah. Ketiga performa website secara keseluruhan meningkat tajam. Keempat ini sangat positif buat SEO karena Google sangat menghargai website yang cepat dan memberikan pengalaman pengguna yang baik. Kelima mengurangi beban server karena resource nggak langsung diminta semuanya.
Intinya lazy loading ini kunci penting untuk optimasi performa website modern. Ini bukan cuma teknik canggih tapi sudah jadi kebutuhan buat website yang ingin bersaing di internet saat ini.
Cara Kerja Lazy Loading Seperti Apa Sih?
Mari kita bedah sedikit bagaimana lazy loading ini bekerja di balik layar. Pada dasarnya ada dua pendekatan utama untuk lazy loading.
Native Lazy Loading Itu Pahlawan Bawaan Browser
Ini adalah cara paling simpel dan modern buat lazy loading dan pahlawannya itu browser kita sendiri. Sekarang mayoritas browser modern kayak Chrome Firefox Edge sampai Safari sudah mendukung native lazy loading untuk gambar dan iframe. Caranya gampang banget kita cuma perlu menambahkan atribut loading="lazy" di tag
atau </code> kita.</p><p>Contohnya begini.</p><p>Untuk gambar yang tadinya gini: <code><img src="gambar-keren.jpg" alt="Foto Keren"></code></p><p>Kita ubah jadi begini: <code><img src="gambar-keren.jpg" alt="Foto Keren" loading="lazy"></code></p><p>Sama juga buat iframe.</p><p>Yang tadinya gini: <code><iframe src="video-youtube.html" width="560" height="315" frameborder="0" allowfullscreen>
Kita ubah jadi begini:
Asik kan? Dengan satu atribut ini browser secara otomatis akan menunda pemuatan gambar atau iframe sampai mereka mendekati viewport pengguna. Ini adalah cara yang paling direkomendasikan karena paling efisien nggak butuh JavaScript tambahan dan performanya optimal karena ditangani langsung oleh browser.
JavaScript Based Lazy Loading Solusi Fleksibel
Meski native lazy loading sudah sangat powerful ada kalanya kita perlu solusi yang lebih fleksibel atau untuk kasus kasus tertentu yang belum didukung native. Di sinilah JavaScript based lazy loading berperan. Pendekatan ini biasanya menggunakan Intersection Observer API sebuah API modern di browser yang memungkinkan kita untuk mendeteksi kapan sebuah elemen masuk atau keluar dari viewport.
Cara kerjanya begini. Kita akan mengubah atribut src dari gambar atau data-src awalnya kosong atau berisi placeholder kecil. Ketika elemen gambar tersebut masuk ke viewport Intersection Observer akan mendeteksi itu dan kemudian kita akan menggunakan JavaScript untuk mengambil nilai data-src dan memindahkannya ke src yang sebenarnya sehingga gambar pun dimuat.
Contoh dasar dengan JavaScript:
Kita punya gambar seperti ini:
Kemudian di JavaScript kita akan membuat script sederhana untuk mendeteksi elemen dengan class lazyload. Ketika elemen ini terlihat kita akan mengganti data-src ke src.
document.addEventListener("DOMContentLoaded", function() { var lazyloadImages = document.querySelectorAll("img.lazyload"); var lazyloadThrottleTimeout; function lazyload () { if(lazyloadThrottleTimeout) { clearTimeout(lazyloadThrottleTimeout); } lazyloadThrottleTimeout = setTimeout(function() { var scrollTop = window.pageYOffset; lazyloadImages.forEach(function(img) { if(img.offsetTop < (window.innerHeight + scrollTop)) { img.src = img.dataset.src; img.classList.remove('lazyload'); } }); if(lazyloadImages.length == 0) { document.removeEventListener("scroll", lazyload); window.removeEventListener("resize", lazyload); window.removeEventListener("orientationChange", lazyload); } }, 20); } document.addEventListener("scroll", lazyload); window.addEventListener("resize", lazyload); window.addEventListener("orientationChange", lazyload); });
Ini contoh paling sederhana lho biasanya ada library yang sudah jadi seperti lazysizes.js yang lebih robust dan mendukung banyak kasus edge. Jika kita pakai framework seperti React Vue atau Angular juga ada komponen atau library lazy loading yang bisa langsung dipakai.
Implementasi Lazy Loading yang Bener Biar Wus!
Mengimplementasikan lazy loading itu bukan cuma pasang atribut loading="lazy" atau script aja lho. Ada beberapa hal yang perlu kita perhatikan biar hasilnya maksimal dan nggak malah jadi bumerang buat performa atau SEO.
Prioritaskan Native Lazy Loading untuk Gambar dan Iframe
Ini yang paling utama. Jika target browser kita mendukung native lazy loading selalu prioritaskan ini. Ini ringan efisien dan ditangani langsung oleh browser jadi nggak ada overhead JavaScript tambahan. Cukup tambahkan loading="lazy" di tag
dan </code> kita.</p><h2>Jangan Lazy Load Konten di Atas Fold</h2><p>Ini penting banget dan sering jadi kesalahan. Konten "above the fold" yaitu konten yang langsung terlihat saat halaman dimuat tanpa perlu scroll sama sekali itu HARUS di-load secara langsung. Jangan sekali kali di-lazy load. Kenapa? Karena ini akan mempengaruhi Core Web Vitals terutama LCP Largest Contentful Paint. Kalau elemen utama di atas fold di-lazy load LCP kita akan hancur dan website akan terasa lambat padahal tujuannya mau cepat.</p><p>Jadi untuk gambar logo hero image atau elemen penting lain yang pasti terlihat di awal jangan pakai <code>loading="lazy"</code>. Biarkan browser memuatnya secepat mungkin.</p><h2>Gunakan Placeholder atau Gambar Kecil</h2><p>Untuk gambar yang di-lazy load ada baiknya kita menyediakan placeholder atau gambar kecil berukuran sangat rendah misalnya dengan warna solid atau efek blur. Ini akan mencegah "layout shift" atau pergeseran tata letak saat gambar aslinya dimuat. Pergeseran tata letak ini juga salah satu metrik di Core Web Vitals yaitu CLS Cumulative Layout Shift. Kalau kita nggak kasih placeholder dan gambar muncul tiba tiba setelah user scroll itu bisa bikin pengalaman pengguna jadi jelek banget.</p><p>Kita bisa menggunakan teknik seperti <code>intrinsic ratio</code> dengan padding top untuk menjaga rasio aspek gambar tetap stabil sebelum dimuat. Atau pakai <code>low quality image placeholder</code> LQIP.</p><h2>Responsif itu Wajib Hukumnya</h2><p>Lazy loading itu powerful tapi nggak akan maksimal kalau gambar kita nggak responsif. Pastikan kita menyediakan berbagai ukuran gambar menggunakan atribut <code>srcset</code> dan <code>sizes</code> pada tag <code><img></code>. Ini memungkinkan browser memilih gambar dengan ukuran yang paling sesuai untuk perangkat pengguna yang berbeda beda sehingga menghemat bandwidth dan meningkatkan kecepatan.</p><p>Contoh gambar responsif dengan lazy loading: <code><img src="gambar-kecil.jpg" data-src="gambar-besar.jpg" srcset="gambar-kecil.jpg 480w, gambar-medium.jpg 800w, gambar-besar.jpg 1200w" sizes="(max-width: 600px) 480px, (max-width: 1000px) 800px, 1200px" alt="Gambar Responsif" class="lazyload"></code></p><p>Atau jika pakai native: <code><img src="gambar-kecil.jpg" srcset="gambar-kecil.jpg 480w, gambar-medium.jpg 800w, gambar-besar.jpg 1200w" sizes="(max-width: 600px) 480px, (max-width: 1000px) 800px, 1200px" alt="Gambar Responsif" loading="lazy"></code></p><h2>Tangani Background Images dan Video dengan Benar</h2><p>Native lazy loading nggak berlaku untuk background images yang diatur via CSS. Untuk ini kita perlu sedikit trik JavaScript. Kita bisa menggunakan <code>Intersection Observer</code> untuk menambahkan class tertentu ke elemen ketika elemen tersebut masuk ke viewport yang kemudian akan memicu pemuatan background image via CSS.</p><p>Untuk video juga penting. Selain menggunakan atribut <code>loading="lazy"</code> untuk tag <code><iframe></code> yang memuat video kita bisa menambahkan atribut <code>preload="none"</code> pada tag <code><video></code> untuk mencegah browser memuat metadata video atau seluruh video sebelum dibutuhkan. Ini sangat efektif untuk video yang nggak langsung diputar. Tambahkan juga poster image biar video terlihat bagus sebelum dimuat.</p><p>Contoh video: <code><video controls preload="none" poster="poster-video.jpg" loading="lazy"></code> <code> <source src="video-keren.mp4" type="video/mp4"></code> <code> Browser kamu nggak support video.</code> <code></video></code></p><h2>Uji dan Pantau Performa</h2><p>Setelah mengimplementasikan lazy loading jangan lupa untuk selalu menguji dan memantau performa website kita. Gunakan tools seperti Google PageSpeed Insights Lighthouse WebPageTest atau GTmetrix. Perhatikan metrik Core Web Vitals terutama LCP FID dan CLS. Pastikan lazy loading yang kita terapkan benar benar meningkatkan performa dan nggak ada efek samping yang merugikan.</p><p>Kita bisa mensimulasikan koneksi lambat di browser developer tools untuk melihat bagaimana website kita berperilaku dalam kondisi tersebut. Pastikan juga semua gambar dan iframe yang seharusnya di-lazy load benar benar di-lazy load dan yang di atas fold tetap dimuat duluan.</p><h1>Lazy Loading dan SEO Itu Sahabat Karib</h1><p>Google sangat peduli dengan kecepatan website dan pengalaman pengguna. Lazy loading yang diimplementasikan dengan benar adalah salah satu cara terbaik untuk menunjukkan kepada Google bahwa website kita memberikan pengalaman yang optimal.</p><h2>Peningkatan Core Web Vitals</h2><p>Seperti yang sudah kita bahas lazy loading bisa sangat membantu meningkatkan metrik Core Web Vitals kita. LCP akan membaik karena konten di atas fold dimuat lebih cepat. CLS akan stabil jika kita menggunakan placeholder atau ruang yang dicadangkan. FID juga akan lebih baik karena main thread browser nggak terlalu sibuk memuat semua resource di awal sehingga lebih responsif terhadap interaksi pengguna.</p><h2>Ranking dan Visibilitas</h2><p>Website yang cepat cenderung mendapatkan ranking yang lebih baik di hasil pencarian Google. Ini karena Google ingin menyajikan hasil terbaik bagi penggunanya dan "best" itu termasuk cepat dan responsif. Dengan performa yang meningkat website kita punya peluang lebih besar untuk tampil lebih tinggi dan mendapatkan lebih banyak traffic organik. Ini asik banget kan buat bisnis atau proyek kita.</p><h2>Pengalaman Pengguna yang Lebih Baik</h2><p>Pada akhirnya SEO itu bukan cuma tentang algoritma tapi juga tentang manusia yang menggunakan website kita. Website yang loadingnya wus akan membuat pengunjung senang betah dan cenderung kembali lagi. Mereka akan menjelajahi lebih banyak halaman yang pada gilirannya akan mengurangi bounce rate dan meningkatkan waktu di situs atau time on site. Semua ini adalah sinyal positif bagi Google.</p><h1>Kesimpulan Website Wus Itu Bukan Cuma Mimpi!</h1><p>Jadi teman teman sekarang kita sudah tahu kan bahwa website nge-lag itu bukan takdir dan ada solusinya yang asik yaitu lazy loading. Dengan mengimplementasikan lazy loading yang benar memprioritaskan native lazy loading menghindari lazy loading di atas fold menggunakan placeholder dan memastikan responsif website kita akan berubah dari yang tadinya terseok seok jadi wus!</p><p>Ini bukan cuma tentang trik teknis tapi juga tentang memberikan pengalaman terbaik bagi pengguna kita. Website yang cepat itu kunci di era digital ini jadi jangan sampai kita ketinggalan. Yuk mulai audit website kita dan terapkan lazy loading dengan benar biar website kita makin kenceng dan jadi juara di mata pengguna maupun Google. Semangat!</p></body>