Mengoptimalkan Data Web menggunakan Lighthouse

Menemukan peluang untuk meningkatkan pengalaman pengguna dengan alat web Chrome.

Dipublikasikan: 11 Mei 2021

Hari ini, kami akan membahas fitur alat baru di Lighthouse, PageSpeed, dan DevTools untuk membantu mengidentifikasi cara meningkatkan Data Web di situs Anda.

Sebagai pengingat tentang alat ini, Lighthouse adalah alat otomatis open source untuk meningkatkan kualitas halaman web. Anda dapat menemukannya di rangkaian alat proses debug Chrome DevTools dan menjalankannya di halaman web apa pun, baik yang bersifat publik maupun yang memerlukan autentikasi. Anda juga dapat menemukan Lighthouse di PageSpeed Insights, CI, dan WebPageTest.

Lighthouse 7.x menyertakan fitur baru seperti screenshot elemen, untuk pemeriksaan visual yang lebih mudah pada bagian UI yang memengaruhi metrik pengalaman pengguna (misalnya, node yang berkontribusi pada pergeseran tata letak).

Kami juga telah mengirimkan dukungan untuk screenshot elemen di PageSpeed Insights, yang memungkinkan cara untuk lebih mudah menemukan masalah untuk performa halaman yang berjalan satu kali.

Screenshot Elemen yang menyoroti node DOM yang berkontribusi pada pergeseran tata letak di halaman

Mengukur Core Web Vitals

Lighthouse dapat mengukur metrik Core Web Vitals secara sintetis, termasuk Largest Contentful Paint, Cumulative Layout Shift, dan Total Blocking Time (proxy lab untuk Penundaan Input Pertama). Metrik ini mencerminkan pemuatan, stabilitas tata letak, dan kesiapan interaksi. Metrik lain seperti First Contentful Paint yang ditandai dalam masa depan Data Web Inti juga ada di sana.

Bagian "Metrik" dalam laporan Lighthouse menyertakan versi lab metrik ini. Anda dapat menggunakannya sebagai tampilan ringkasan tentang aspek pengalaman pengguna yang memerlukan perhatian Anda.

Metrik performa Lighthouse
Jalur Web Vitals di panel performa devtools
Opsi Data Web baru di panel Performa DevTools menampilkan jalur yang menyoroti momen metrik, seperti Pergeseran Tata Letak (LS) yang ditampilkan di atas.

Metrik kolom, seperti yang ditemukan di Laporan Pengalaman Pengguna Chrome atau RUM, tidak memiliki batasan ini dan merupakan pelengkap yang berharga untuk data lab karena mencerminkan pengalaman yang dimiliki pengguna yang sebenarnya. Data lapangan tidak dapat menawarkan jenis informasi diagnostik yang Anda dapatkan di lab, sehingga keduanya berjalan seiring.

Mengidentifikasi area yang dapat Anda tingkatkan pada Data Web

Mengidentifikasi elemen Largest Contentful Paint (LCP)

LCP adalah pengukuran pengalaman pemuatan yang dirasakan. Ini menandai titik selama pemuatan halaman saat konten utama–atau "terbesar"–telah dimuat dan terlihat oleh pengguna.

Lighthouse memiliki audit "Elemen Largest Contentful Paint" yang mengidentifikasi elemen mana yang merupakan Largest Contentful Paint (LCP). Mengarahkan kursor ke elemen akan menandainya di jendela browser utama.

Elemen Largest Contentful Paint (LCP)

Jika elemen ini adalah gambar, informasi ini adalah petunjuk berguna yang mungkin ingin Anda optimalkan pemuatan gambar ini. Lighthouse menyertakan sejumlah audit pengoptimalan gambar untuk membantu Anda memahami apakah gambar dapat dikompresi, diubah ukurannya, atau dikirimkan dengan lebih baik dalam format gambar modern yang lebih optimal.

Audit ukuran gambar yang tepat

Anda mungkin juga menemukan Bookmarklet LCP oleh Annie Sullivan yang berguna untuk mengidentifikasi elemen LCP dengan cepat menggunakan persegi panjang merah hanya dengan sekali klik.

Menyoroti elemen LCP dengan bookmarklet

Pramuat gambar yang baru ditemukan untuk meningkatkan LCP

Untuk meningkatkan Largest Contentful Paint, pramuat gambar hero kritis Anda jika gambar tersebut ditemukan terlambat oleh browser. Penemuan terlambat dapat terjadi jika paket JavaScript perlu dimuat sebelum gambar dapat ditemukan.

Memuat gambar Largest Contentful Paint (LCP) secara pramuat

Ada beberapa pertanyaan umum yang kami terima tentang pramuat gambar LCP yang mungkin juga perlu dibahas secara singkat.

Dapatkah Anda melakukan pramuat gambar responsif? Ya. Misalnya, kita memiliki gambar hero responsif seperti yang ditentukan menggunakan srcset dan sizes di bawah ini:

<img src="lighthouse.jpg"
          srcset="lighthouse_400px.jpg 400w,
                  lighthouse_800px.jpg 800w,
                  lighthouse_1600px.jpg 1600w" sizes="50vw" alt="A helpful
Lighthouse">

Berkat atribut imagesrcset dan imagesizes yang ditambahkan ke atribut link, kita dapat memuat gambar responsif secara offline menggunakan logika pemilihan gambar yang sama dengan yang digunakan oleh srcset dan sizes:

<link rel="preload" as="image" href="lighthouse.jpg"
           imagesrcset="lighthouse_400px.jpg 400w,
                        lighthouse_800px.jpg 800w,
                        lighthouse_1600px.jpg 1600w"
imagesizes="50vw">

Apakah audit juga akan menyoroti peluang pramuat jika gambar LCP ditentukan melalui latar belakang CSS? Ya.

Setiap gambar yang ditandai sebagai gambar LCP, baik melalui latar belakang CSS maupun <img>, adalah kandidat jika ditemukan pada kedalaman waterfall tiga atau lebih.

Memuat lambat gambar di luar layar dan menghindarinya untuk LCP

Gambar di luar layar yang tidak penting untuk pengalaman pengguna awal dapat dimuat lambat. Ini adalah teknik yang menunda download gambar hingga pengguna men-scroll di dekatnya, yang dapat mengurangi pertentangan jaringan untuk aset penting dan dalam beberapa kasus meningkatkan LCP. Audit "Menunda gambar di balik layar" dapat membantu di sini:

Menunda gambar di luar layar

Gambar paruh atas yang penting, seperti gambar Largest Contentful Paint, tidak boleh dimuat dengan lambat. Tindakan ini dapat menunda pemuatan gambar LCP. Lighthouse akan menandai jika gambar LCP dimuat dengan lambat secara tidak benar melalui audit "Gambar Largest Contentful Paint dimuat dengan lambat":

Menghindari pemuatan lambat gambar LCP

Mengidentifikasi kontribusi CLS

Pergeseran Tata Letak Kumulatif adalah pengukuran stabilitas visual. Ini mengukur seberapa banyak konten halaman berpindah secara visual. Lighthouse memiliki audit untuk men-debug CLS yang disebut "Hindari perubahan tata letak yang besar".

Audit ini menyoroti elemen DOM yang paling banyak berkontribusi pada pergeseran halaman. Di kolom Elemen di sebelah kiri, Anda akan melihat daftar elemen DOM ini dan di sebelah kanan, kontribusi CLS keseluruhannya.

Audit hindari peralihan tata letak berukuran besar di Lighthouse yang menyoroti node DOM yang relevan yang berkontribusi pada CLS

Berkat fitur Screenshot Elemen Lighthouse yang baru, kita dapat melihat pratinjau visual elemen utama yang dicatat dalam audit serta klik untuk memperbesar agar tampilan lebih jelas:

Mengklik screenshot Elemen akan meluaskannya

Untuk CLS pasca-muat, ada nilai dalam memvisualisasikan secara persisten dengan persegi panjang elemen mana yang paling berkontribusi pada CLS. Ini adalah fitur yang akan Anda temukan di alat pihak ketiga seperti dasbor Core Web Vitals SpeedCurve dan yang saya sukai menggunakan Generator GIF Layout Shift Defaced untuk:

generator perubahan tata letak yang menandai perubahan

Untuk melihat masalah pergeseran tata letak di seluruh situs, saya mendapatkan banyak manfaat dari laporan Data Web Inti Search Console. Dengan begitu, saya dapat melihat jenis halaman di situs saya dengan CLS tinggi (dalam hal ini membantu mengidentifikasi sendiri bagian template yang perlu saya kerjakan):

Search Console menampilkan masalah CLS

Mengidentifikasi CLS dari gambar tanpa dimensi

Untuk membatasi Cumulative Layout Shift yang disebabkan oleh gambar tanpa dimensi, sertakan atribut ukuran lebar dan tinggi pada gambar dan elemen video Anda. Pendekatan ini memastikan bahwa browser dapat mengalokasikan jumlah ruang yang benar dalam dokumen saat gambar dimuat.

Mengaudit elemen gambar tanpa lebar dan tinggi yang jelas

Lihat Menetapkan Tinggi Dan Lebar Pada Gambar Penting Lagi untuk tulisan yang bagus tentang pentingnya mempertimbangkan dimensi dan rasio aspek gambar.

Mengidentifikasi CLS dari iklan

Iklan Penayang untuk Lighthouse memungkinkan Anda menemukan peluang untuk meningkatkan pengalaman pemuatan iklan di halaman, termasuk kontribusi terhadap pergeseran tata letak dan tugas yang lama yang dapat memperlambat waktu halaman Anda dapat digunakan oleh pengguna. Di Lighthouse, Anda dapat mengaktifkannya melalui Plugin Komunitas.

Audit terkait iklan yang menyoroti peluang untuk mengurangi waktu permintaan dan pergeseran tata letak

Ingat bahwa iklan adalah salah satu kontributor terbesar pada pergeseran tata letak di web. Penting untuk:

  • Berhati-hatilah saat menempatkan iklan non-melekat di dekat bagian atas area pandang
  • Menghilangkan pergeseran dengan mencadangkan ukuran terbesar untuk slot iklan

Menghindari animasi yang tidak digabungkan

Animasi yang tidak digabungkan dapat terlihat tersendat di perangkat kelas bawah jika tugas JavaScript yang berat membuat thread utama sibuk. Animasi tersebut dapat menyebabkan pergeseran tata letak.

Jika Chrome menemukan animasi yang tidak dapat digabungkan, Chrome akan melaporkannya ke rekaman aktivitas DevTools yang dibaca Lighthouse, sehingga dapat mencantumkan elemen mana dengan animasi yang tidak digabungkan dan karena alasan apa. Anda dapat menemukannya di audit Menghindari animasi yang tidak digabungkan.

Mengaudit untuk menghindari animasi yang tidak digabungkan

Men-debug Penundaan Input Pertama / Total Blocking Time / Tugas Panjang

Input Pertama mengukur waktu dari saat pengguna pertama kali berinteraksi dengan halaman (misalnya, saat mereka mengklik link, mengetuk tombol, atau menggunakan kontrol khusus JavaScript) hingga saat browser benar-benar dapat mulai memproses pengendali peristiwa sebagai respons terhadap interaksi tersebut. Tugas JavaScript yang lama dapat memengaruhi metrik ini dan proxy untuk metrik ini, Total Blocking Time.

Audit untuk menghindari tugas thread utama yang berjalan lama

Lighthouse menyertakan audit Hindari tugas thread utama yang berjalan lama yang mencantumkan tugas terpanjang di thread utama. Hal ini dapat membantu mengidentifikasi kontributor utama penundaan input. Di kolom kiri, kita dapat melihat URL skrip yang bertanggung jawab atas tugas thread utama yang lama.

Di sebelah kanan, kita dapat melihat durasi tugas ini. Sebagai pengingat, Tugas Panjang adalah tugas yang dijalankan selama lebih dari 50 milidetik. Hal ini dianggap memblokir thread utama cukup lama untuk memengaruhi kecepatan frame atau latensi input.

Jika mempertimbangkan layanan pihak ketiga untuk pemantauan, saya juga cukup menyukai linimasa eksekusi thread utama visual yang dimiliki Calibre untuk memvisualisasikan biaya ini, yang menyoroti tugas induk dan turunan yang berkontribusi pada tugas yang lama dan memengaruhi interaktivitas.

Linimasa visual eksekusi thread utama yang dimiliki Calibre

Memblokir permintaan jaringan untuk melihat dampak sebelum/setelah di Lighthouse

Chrome DevTools mendukung pemblokiran permintaan jaringan untuk melihat dampak setiap resource yang dihapus atau tidak tersedia. Hal ini dapat membantu untuk memahami biaya yang dimiliki setiap skrip (misalnya seperti penyematan atau pelacak pihak ketiga) terhadap metrik seperti Total Blocking Time (TBT) dan Time to Interactive.

Pemblokiran permintaan jaringan juga berfungsi dengan Lighthouse. Mari kita lihat sekilas laporan Lighthouse untuk situs. Skor Perf adalah 63/100 dengan TBT 400 md. Setelah mempelajari kodenya, kami menemukan bahwa situs ini memuat polyfill Intersection Observer di Chrome yang tidak diperlukan. Mari kita blokir.

Pemblokiran permintaan jaringan

Kita dapat mengklik kanan skrip di panel Jaringan DevTools dan mengklik Block Request URL untuk memblokirnya. Di sini, kita akan melakukannya untuk polyfill Intersection Observer.

Memblokir URL permintaan di DevTools

Selanjutnya, kita dapat menjalankan kembali Lighthouse. Kali ini kita dapat melihat skor performa telah meningkat (70/100) begitu pula dengan Total Blocking Time (400 md => 300 md).

Tampilan setelah pemblokiran permintaan jaringan yang mahal

Mengganti penyematan pihak ketiga yang mahal dengan fasad

Umumnya, resource pihak ketiga digunakan untuk menyematkan video, postingan media sosial, atau widget ke dalam halaman. Secara default, sebagian besar penyematan langsung dimuat dan dapat disertai payload mahal yang memengaruhi pengalaman pengguna secara negatif. Hal ini akan menjadi pemborosan jika pihak ketiga tidak penting (misalnya, jika pengguna perlu men-scroll sebelum melihatnya).

Salah satu pola untuk meningkatkan performa widget tersebut adalah dengan memuat lambat widget tersebut saat interaksi pengguna. Hal ini dapat dilakukan dengan merender pratinjau ringan widget (facade) dan hanya memuat versi lengkap jika pengguna berinteraksi dengannya. Lighthouse memiliki audit yang akan merekomendasikan resource pihak ketiga yang dapat dimuat lambat dengan fasad, seperti penyematan video YouTube.

Audit yang menyoroti bahwa beberapa resource pihak ketiga yang mahal dapat diganti

Sebagai pengingat, Lighthouse akan menandai kode pihak ketiga yang memblokir thread utama selama lebih dari 250 md. Hal ini dapat mengekspos semua jenis skrip pihak ketiga (termasuk yang ditulis oleh Google) yang mungkin lebih baik ditangguhkan atau dimuat lambat jika apa yang direndernya memerlukan scroll untuk melihatnya.

Mengurangi biaya audit JavaScript pihak ketiga

Di Luar Core Web Vitals

Selain menyoroti Core Web Vitals, Lighthouse dan PageSpeed Insights versi terbaru juga mencoba memberikan panduan konkret yang dapat Anda ikuti untuk meningkatkan kecepatan aplikasi web yang banyak menggunakan JavaScript jika Anda mengaktifkan peta sumber.

Hal ini mencakup koleksi audit yang terus bertambah untuk mengurangi biaya JavaScript di halaman Anda, seperti mengurangi ketergantungan pada polyfill dan duplikat yang mungkin tidak diperlukan untuk pengalaman pengguna.

Untuk informasi selengkapnya tentang alat Core Web Vitals, pantau akun Twitter tim Lighthouse dan Yang baru di DevTools.

Banner besar oleh Mercedes Mehling di Unsplash.