Menggunakan Lighthouse untuk meningkatkan performa pemuatan halaman

Lighthouse adalah alat otomatis untuk meningkatkan kualitas situs Anda. Anda memberikan URL, dan alat ini akan memberikan daftar rekomendasi tentang cara meningkatkan performa halaman, membuat halaman lebih mudah diakses, mematuhi praktik terbaik, dan lainnya. Anda dapat menjalankannya dari dalam Chrome DevTools, sebagai Ekstensi Chrome, atau bahkan sebagai modul Node, yang berguna untuk integrasi berkelanjutan.

Selama beberapa waktu, Lighthouse telah memberikan banyak tips untuk meningkatkan performa pemuatan halaman, seperti mengaktifkan kompresi teks atau mengurangi skrip yang memblokir rendering. Tim Lighthouse terus mengirimkan audit baru untuk memberi Anda saran yang lebih berguna untuk mempercepat situs. Postingan ini adalah rangkuman audit performa yang berguna yang mungkin tidak Anda ketahui, seperti:

Perincian Kerja Thread Utama

Jika pernah menggunakan panel performa di DevTools, Anda tahu bahwa mendapatkan perincian tempat waktu CPU dihabiskan untuk memuat halaman bisa sedikit merepotkan. Dengan senang hati kami mengumumkan bahwa informasi ini kini tersedia dengan mudah dan praktis melalui audit Perincian Pekerjaan Thread Utama yang baru.

Perincian aktivitas thread utama di Lighthouse.
Gambar 1. Perincian aktivitas thread utama di Lighthouse.

Diagnostik baru ini mengevaluasi jumlah dan jenis aktivitas yang terjadi selama pemuatan halaman, yang dapat Anda gunakan untuk mengatasi masalah performa pemuatan terkait tata letak, evaluasi skrip, penguraian, dan aktivitas lainnya.

Pramuat Permintaan Kunci

Saat mengambil resource, browser melakukannya saat menemukan referensi ke resource tersebut dalam dokumen dan sub-resource-nya. Hal ini terkadang tidak optimal, karena beberapa resource penting ditemukan agak terlambat dalam proses pemuatan halaman. Untungnya, rel=preload memberi developer kemampuan untuk memberi petunjuk kepada browser yang mematuhi resource mana yang harus diambil sesegera mungkin. Audit Preload Key Requests baru memungkinkan developer mengetahui resource apa yang dapat diuntungkan dengan dimuat lebih awal oleh rel=preload.

Audit Lighthouse Permintaan Kunci Pramuat
menyarankan daftar resource yang perlu dipertimbangkan untuk dipramuat.
Gambar 2. Audit Lighthouse Permintaan Kunci Pramuat yang merekomendasikan daftar resource yang perlu dipertimbangkan untuk dipramuat.

Anda harus menguji dan membandingkan perubahan performa dengan dan tanpa rel=preload, karena hal ini dapat memengaruhi performa pemuatan dengan cara yang mungkin tidak Anda harapkan. Misalnya, melakukan pramuat gambar besar dapat menunda rendering awal, tetapi komprominya adalah gambar yang dimuat sebelumnya akan muncul lebih cepat dalam tata letak. Selalu pastikan Anda puas dengan hasilnya.

Waktu Booting JavaScript Tinggi

Jika terlalu banyak JavaScript yang dimuat, halaman dapat menjadi tidak responsif saat browser mengurai, mengompilasi, dan mengeksekusinya. Iklan dan skrip pihak ketiga adalah sumber tertentu dari aktivitas skrip yang berlebihan yang dapat memperlambat perangkat yang canggih sekalipun. Audit Waktu Booting JavaScript Tinggi yang baru mengungkapkan jumlah waktu CPU yang digunakan setiap skrip di halaman, beserta URL-nya:

Lighthouse menampilkan jumlah waktu evaluasi,
pemisahan, dan kompilasi untuk skrip di halaman.
Gambar 3. Lighthouse menampilkan jumlah waktu evaluasi, penguraian, dan kompilasi untuk skrip di halaman.

Saat menjalankan audit ini, Anda juga dapat mengaktifkan badge pihak ketiga di panel jaringan dan memfilter daftar untuk mengidentifikasi resource skrip pihak ketiga. Dengan data dari audit ini, Anda akan lebih siap untuk menemukan sumber aktivitas JavaScript yang berlebihan yang membuat halaman menjadi lambat. Untuk skrip khusus untuk aplikasi Anda, Anda dapat menggunakan teknik seperti pemisahan kode dan penghapusan pohon untuk membatasi jumlah JavaScript di setiap halaman situs Anda.

Menghindari Pengalihan Halaman

Terkadang saat browser meminta URL, server dapat merespons dengan kode status level 300. Hal ini menyebabkan browser mengalihkan pengguna ke URL lain. Meskipun pengalihan diperlukan untuk SEO dan tujuan praktis, pengalihan akan menambah latensi pada permintaan. Hal ini terutama berlaku jika halaman tersebut dialihkan ke origin lain, yang dapat menimbulkan waktu pencarian DNS dan negosiasi koneksi/TLS tambahan.

Rantai pengalihan seperti yang terlihat di panel jaringan
alat developer Chrome.
Gambar 4. Rantai pengalihan seperti yang terlihat di panel jaringan alat developer Chrome.

Pengalihan tidak diinginkan untuk halaman landing di situs Anda. Untuk membantu Anda mengurangi latensi dan meningkatkan performa pemuatan, Lighthouse kini menawarkan audit Menghindari Pengalihan Halaman, yang memberi tahu Anda saat navigasi memicu pengalihan.

Daftar pengalihan halaman di Lighthouse.
Gambar 5. Daftar pengalihan halaman di Lighthouse.

Perhatikan bahwa audit ini sulit dipicu di Lighthouse versi DevTools, karena audit ini menganalisis URL saat ini di kolom URL halaman, yang mencerminkan resolusi semua pengalihan. Anda kemungkinan besar akan melihat audit ini diisi di Node CLI.

JavaScript yang tidak digunakan

Kode mati dapat menjadi masalah serius dalam aplikasi yang banyak menggunakan JavaScript. Meskipun tidak menimbulkan biaya eksekusi karena tidak pernah dipanggil, kode ini memiliki efek lain yang tidak diinginkan. Kode mati masih didownload, diuraikan, dan dikompilasi oleh browser. Hal ini memengaruhi performa pemuatan dan waktu booting JavaScript. Serupa dengan panel cakupan di DevTools, audit JavaScript yang Tidak Digunakan mengungkapkan JavaScript yang didownload oleh halaman saat ini, tetapi tidak pernah digunakan.

Lighthouse menampilkan jumlah JavaScript yang tidak digunakan di halaman.
Gambar 6. Lighthouse menampilkan jumlah JavaScript yang tidak digunakan di halaman.

Dengan audit ini, Anda dapat mengidentifikasi kode mati di aplikasi dan menghapusnya untuk meningkatkan performa pemuatan dan mengurangi penggunaan resource sistem. Tips pro: Anda juga dapat menggunakan panel cakupan kode di DevTools Chrome untuk menemukan informasi ini.

Menggunakan Kebijakan Cache yang Tidak Efisien pada Aset Statis

Meskipun banyak saran performa cenderung berfokus pada peningkatan kecepatan situs untuk pengguna pertama kali, Anda juga harus menggunakan penyimpanan dalam cache untuk meningkatkan performa pemuatan bagi pengguna yang kembali. Audit Menggunakan Kebijakan Cache yang Tidak Efisien pada Aset Statis memeriksa header penyimpanan dalam cache untuk resource jaringan, dan memberi tahu Anda jika kebijakan cache untuk resource statis tidak memenuhi standar.

Tabel aset statis
Gambar 7.

Dengan bantuan audit ini, Anda dapat dengan mudah menemukan dan memperbaiki masalah pada kebijakan cache saat ini. Hal ini akan sangat meningkatkan performa untuk pengguna yang kembali, dan mereka akan menghargai kecepatan ekstra tersebut.

Menghindari Beberapa Perjalanan Pulang Pergi yang Mahal ke Mana Saja

Saat browser mengambil resource dari server, mungkin perlu waktu yang cukup lama untuk melakukan pencarian DNS dan membuat koneksi ke server. rel=preconnect memungkinkan developer menyamarkan latensi ini dengan membuat koneksi ke server lain sebelum browser melakukannya pada waktunya. Audit Menghindari Perjalanan Pulang-Pergi Berulang yang Mahal ke Mana Saja akan membantu Anda menemukan peluang untuk menggunakan rel=preconnect.

Daftar origin yang direkomendasikan untuk
rel=preconnect di Lighthouse.
Gambar 8. Daftar origin yang direkomendasikan untuk rel=preconnect di Lighthouse.

Jika latensi untuk aset lintas origin dikurangi, pengguna akan merasakan bahwa semuanya berjalan sedikit lebih cepat. Dengan audit Lighthouse baru ini, Anda akan mempelajari peluang baru untuk menggunakan rel=preconnect guna melakukannya.

Menggunakan Format Video untuk Konten Animasi

GIF animasi berukuran besar, sering kali menghabiskan setidaknya beberapa ratus kilobyte, jika tidak beberapa megabyte data. Jika Anda peduli dengan performa pemuatan, konversi GIF tersebut menjadi video adalah solusinya. Untungnya, audit Menggunakan Format Video untuk Konten Animasi dapat membantu Anda.

Rekomendasi untuk mengonversi GIF menjadi video di Lighthouse.
Gambar 9. Rekomendasi untuk mengonversi GIF menjadi video di Lighthouse.

Jika situs Anda memiliki GIF yang berukuran lebih dari 100 KB, audit ini akan otomatis menandainya dan mengarahkan Anda ke beberapa panduan tentang cara mengonversinya menjadi video dan menyisipkannya. Situs seperti Imgur telah meningkatkan performa pemuatan secara signifikan dengan mengonversi GIF menjadi video. Selain itu, jika situs Anda menggunakan paket hosting dengan bandwidth berbayar, potensi penghematan biaya saja sudah cukup untuk meyakinkan Anda.

Semua Teks Tetap Terlihat Selama Pemuatan Font Web

Saat memuat font web untuk halaman, browser sering kali merender teks yang tidak terlihat hingga font dimuat. Fenomena ini, yang dikenal sebagai Flash of Invisible Text (FOIT)), mungkin lebih disukai oleh Anda dari sudut pandang desain, tetapi sebenarnya ini adalah masalah. Teks yang diblokir dari rendering tidak dapat dibaca hingga dirender dan terlihat. Pada koneksi latensi tinggi dan/atau bandwidth tinggi, ini berarti bagian inti dari pengalaman pengguna Anda tidak ada. Hal ini juga dapat berupa masalah performa persepsi karena halaman tidak merender konten yang bermakna secepat mungkin. Untungnya, audit Semua Teks Tetap Terlihat Selama Pemuatan Font Web membantu Anda menemukan peluang untuk memperbaikinya di situs Anda.

Lighthouse memberikan rekomendasi untuk meningkatkan
rendering font.
Gambar 10. Lighthouse memberikan rekomendasi untuk meningkatkan rendering font.

Jika Lighthouse menemukan font web di aplikasi Anda yang menunda rendering teks, ada beberapa kemungkinan solusi. Anda dapat mengontrol rendering teks dengan properti CSS font-display, dan/atau Font Loading API. Jika Anda ingin mempelajari lebih lanjut, sebaiknya baca Panduan Komprehensif untuk Strategi Pemuatan Font, panduan yang sangat baik oleh Zach Leatherman yang merupakan referensi yang sangat baik untuk pemuatan font yang optimal.

CSS & JavaScript yang tidak diminifikasi

Pengompresian telah menjadi teknik yang disarankan sejak performa web menjadi hal yang penting, dan dengan alasan yang baik. Hal ini secara signifikan mengurangi ukuran resource berbasis teks, yang pada gilirannya baik untuk performa pemuatan. Namun, pengoptimalan ini mudah diabaikan, terutama jika proses build tidak menanganinya untuk Anda. Audit Minifikasi CSS dan Minifikasi JavaScript akan mengompilasi daftar resource yang tidak diminifikasi yang ditemukan di halaman saat ini. Dari sana, Anda dapat mengambil tindakan dengan melakukan minifikasi file tersebut secara manual, atau meningkatkan sistem build untuk melakukannya.

Aturan CSS yang Tidak Digunakan

Seiring usia situs yang semakin lama, cruft yang tersisa dari pemfaktoran ulang akan mulai menumpuk. Salah satu sumber cruft tersebut berupa aturan CSS yang tidak digunakan dan tidak lagi diperlukan agar situs berfungsi, tetapi masih menggunakan bandwidth. Untuk memudahkan Anda, audit Aturan CSS yang Tidak Digunakan akan mengungkapkan resource CSS mana di halaman yang berisi CSS yang tidak digunakan.

Lighthouse menampilkan daftar resource CSS
yang berisi aturan CSS yang tidak digunakan.
Gambar 11. Lighthouse menampilkan daftar resource CSS yang berisi aturan CSS yang tidak digunakan.

Jika Lighthouse menemukan CSS yang tidak digunakan di halaman, ada cara untuk menghapusnya. UnCSS adalah salah satu utilitas yang melakukannya secara otomatis untuk Anda (meskipun harus digunakan dengan hati-hati). Metode yang lebih manual mencakup penggunaan panel cakupan kode di DevTools. Namun, ingatlah bahwa CSS yang tidak digunakan di satu halaman mungkin diperlukan di halaman lain. Pendekatan lainnya adalah membagi CSS menjadi file khusus template yang hanya dimuat jika diperlukan. Apa pun yang Anda putuskan untuk dilakukan, Lighthouse akan ada untuk memberi tahu Anda jika CSS cruft Anda sudah terlalu banyak.

Cobalah Lighthouse.

Jika Anda tertarik dengan audit baru ini, update Lighthouse dan coba audit tersebut.

  • Ekstensi Chrome Lighthouse akan otomatis diupdate, tetapi Anda dapat mengupdatenya secara manual melalui chrome://extensions.
  • Di DevTools, Anda dapat menjalankan Lighthouse di panel audit. Chrome diupdate ke versi baru setiap 6 minggu sekali, sehingga beberapa audit yang lebih baru mungkin tidak tersedia. Jika ingin segera menggunakan audit terbaru yang tersedia, Anda dapat menjalankan kode Chrome terbaru dengan mendownload Chrome Canary.
  • Untuk pengguna Node: Jalankan npm update lighthouse, atau npm update lighthouse -g jika Anda menginstal Lighthouse secara global.

Terima kasih khusus kepada Kayce Basques, Patrick Hulce, Addy Osmani, dan Vinamrata Singal atas masukan berharga mereka, yang secara signifikan meningkatkan kualitas artikel ini.