Tips Praktis Percepat Website dengan Image Lazy Loading

Daftar Isi

    Jika halaman website Anda berat karena banyak gambar, browser akan mengunduh semuanya sekaligus bahkan gambar yang berada di bawah layar (below the fold). Lazy loading membantu menunda pengunduhan gambar sampai pengunjung hampir melihatnya, sehingga halaman tampil lebih cepat dan pengalaman pengguna membaik.


    Apa itu lazy loading?


    Lazy loading artinya menunda pemuatan (download) resource sampai resource tersebut benar-benar dibutuhkan. Pada praktik paling umum, ini diterapkan untuk gambar dan iframe: gambar di bawah layar tidak diunduh sampai pengunjung menggulir mendekatinya. Teknik ini mengurangi penggunaan bandwidth awal dan membantu prioritaskan resource penting.


    Cara termudah: atribut loading="lazy"


    HTML modern menyediakan cara native yang sangat mudah: tambahkan atribut loading="lazy" pada tag .


    Contoh:


    ...


    Keunggulan native lazy loading:

    • Tidak perlu library tambahan (mengurangi JavaScript yang harus dimuat).
    • Browser menangani kapan harus mengambil gambar dengan heuristik sendiri.


    Browser Support


    Native lazy loading didukung oleh browser utama modern (Chrome, Firefox, Edge, Safari). Artinya, untuk kebanyakan pengguna Anda aman mengandalkan atribut loading="lazy"; fallback minimal biasanya tidak diperlukan untuk browser terbaru. Namun selalu cek analytics Anda kalau ada audiens signifikan dari browser lawas.


    Background Images


    Atribut loading="lazy" tidak bekerja untuk background-image yang ditetapkan via CSS. Untuk background Anda perlu solusi JavaScript, misalnya menggunakan Intersection Observer API untuk mendeteksi kapan elemen hampir tampil lalu memasang background-image atau kelas CSS yang mengaktifkannya.


    Trade-off: LCP Bisa Lebih Baik Tapi Ada Dampak Lain


    Mengaktifkan lazy loading sering memperbaiki waktu sampai konten terlihat besar (Largest Contentful Paint - LCP), karena browser memprioritaskan resource yang terlihat. Contoh praktis: LCP bisa turun signifikan setelah menunda gambar bawah layar. Namun ada kemungkinan metrik lain seperti Time to Interactive (TTI) atau skor Lighthouse "Performance" justru memburuk karena lebih banyak aktivitas jaringan terjadi lebih lama setelah render awal. Intinya: fokuslah pada pengalaman pengguna, bukan sekadar angka skor.


    Tips Praktis dan Best Practice


    1. Jangan lazy-load LCP image: Pastikan gambar utama di atas layar tidak ditunda, karena itu menurunkan nilai LCP. 
    2. Gunakan native dulu: Native loading="lazy" lebih unggul dalam banyak kasus dibanding library pihak ketiga karena tidak perlu mengunduh script ekstra. 
    3. Background: pakai Intersection Observer: Untuk hero atau elemen dengan background-image, gunakan Intersection Observer untuk men-set image ketika elemen mendekati viewport. 
    4. Pertimbangkan mode baca offline : Jika situs Anda punya audiens yang kerap menyimpan halaman untuk dibaca offline, Anda bisa mencabut atribut loading setelah beberapa detik agar gambar segera diunduh, tapi ini meningkatkan konsumsi data. Contoh pendek (setTimeout) bisa dipakai dengan bijak. 
    5. Uji efek pada pengguna nyata:  Jalankan A/B test atau gunakan tools monitoring untuk melihat efek pada Core Web Vitals dan metrik kenyamanan pengguna. 


    Contoh snippet: lazy load untuk background dengan Intersection Observer


    const io = new IntersectionObserver((entries) => {

      entries.forEach(entry => {

        if (entry.isIntersecting) {

          entry.target.classList.add('bg-loaded'); // .bg-loaded punya background-image di CSS

          io.unobserve(entry.target);

        }

      });

    }, { rootMargin: '200px' });


    document.querySelectorAll('.lazy-bg').forEach(el => io.observe(el));


    Kesimpulan


    Lazy loading adalah alat sederhana tapi kuat untuk mengurangi waktu muat awal dan menggunakan bandwidth lebih efisien. Gunakan loading="lazy" untuk gambar biasa, pakai Intersection Observer untuk background, dan jangan lupa menguji efeknya pada metrik UX yang benar-benar Anda pedulikan (mis. LCP). Kadang optimasi yang menurunkan skor Lighthouse masih bisa meningkatkan pengalaman pengguna nyata, pilih metrik yang relevan untuk tujuan Anda.

    Category: Tips & Trik

    Tag: Tips, Tips Website

    FAQ

    Native menggunakan atribut HTML (loading="lazy") dan dijalankan oleh browser tanpa script tambahan. Lazy loading lewat JavaScript butuh kode yang memantau posisi elemen, misalnya Intersection Observer. Native biasanya lebih ringan dan cepat dikenakan.

    Tidak. Gambar yang berada di atas layar atau yang menjadi LCP sebaiknya tidak dilazy-load karena berdampak pada pengalaman awal pengguna. Prioritaskan gambar penting.

    Anda bisa menghapus atribut loading setelah beberapa detik agar gambar otomatis terunduh. Pertimbangkan efek pada data pengguna karena ini akan meningkatkan konsumsi bandwidth.

    Karena lazy loading memindahkan beberapa unduhan ke fase setelah render awal, sehingga Lighthouse bisa mendeteksi aktivitas jaringan berkelanjutan yang menurunkan TTI atau skor Performance. Fokuslah pada Core Web Vitals yang terkait pengalaman pengguna (mis. LCP).

    Search engine modern biasanya bisa merender konten yang dimuat secara dinamis, tetapi pastikan konten penting tidak sepenuhnya tergantung pada lazy loading client-side agar bot dapat mengindeksnya. Uji dengan tools pengindeksan jika perlu. (Saran umum dari praktik SEO dan pengujian rendering)