Banyak faktor yang memengaruhi performa halaman web. Skor performa Lighthouse cenderung berubah karena variabilitas yang melekat dalam teknologi web dan jaringan, meskipun belum ada perubahan pada halaman.
Sumber Variabilitas
Variabilitas dalam pengukuran performa diperkenalkan melalui sejumlah saluran dengan tingkat dampak yang berbeda-beda. Di bawah ini adalah tabel yang berisi beberapa sumber umum variabilitas metrik, dampak yang biasanya timbul terhadap hasil, dan kemungkinan terjadinya perubahan di lingkungan yang berbeda.
Sumber | Dampak | Pengguna Akhir Umum | PageSpeed Insights | Lab Terkontrol |
---|---|---|---|---|
Nondeterminisme halaman | Tinggi | KEMUNGKINAN | KEMUNGKINAN | KEMUNGKINAN |
Variabilitas jaringan lokal | Tinggi | KEMUNGKINAN | KEMUNGKINAN TIDAK | KEMUNGKINAN TIDAK |
Variabilitas jaringan tingkat-1 | Sedang | KEMUNGKINAN | KEMUNGKINAN | KEMUNGKINAN |
Variabilitas server web | Rendah | KEMUNGKINAN | KEMUNGKINAN | KEMUNGKINAN |
Variabilitas hardware klien | Tinggi | KEMUNGKINAN | KEMUNGKINAN TIDAK | KEMUNGKINAN TIDAK |
Pertentangan resource klien | Tinggi | KEMUNGKINAN | KEMUNGKINAN | KEMUNGKINAN TIDAK |
Nondeterminisme browser | Sedang | TERTENTU | TERTENTU | TERTENTU |
Di bawah ini adalah deskripsi yang lebih mendetail tentang sumber varian dan dampaknya terhadap kombinasi yang paling mungkin dari runtime + lingkungan Lighthouse. Meskipun pendekatan throttling dan throttling yang disimulasikan dapat digunakan di salah satu dari tiga lingkungan ini, pengguna akhir pada umumnya menggunakan throttling yang disimulasikan.
Nondeterminisme Halaman
Halaman dapat berisi logika yang tidak deterministik dan mengubah cara pengguna melihat halaman, yaitu pengujian A/B yang mengubah tata letak dan aset yang dimuat atau pengalaman iklan yang berbeda berdasarkan progres kampanye. Ini adalah sumber varians yang disengaja dan tidak dapat dihapus. Jika halaman berubah sehingga menurunkan performa, Lighthouse harus dapat mengidentifikasi kasus ini. Satu-satunya mitigasi di sini adalah oleh pemilik situs untuk memastikan bahwa versi halaman yang sama persis sedang diuji di antara berbagai operasi.
Variabilitas Jaringan Lokal
Jaringan lokal memiliki variabilitas yang melekat pada paket yang hilang, prioritas traffic variabel, dan kemacetan jaringan kilometer terakhir. Pengguna dengan {i>router<i} murah dan banyak perangkat yang berbagi {i>bandwidth<i} terbatas biasanya paling rentan terhadap hal ini. Throttling yang diterapkan mengurangi sebagian efek ini dengan menerapkan latensi permintaan minimum dan throughput maksimum yang menyamarkan percobaan ulang yang mendasarinya. Throttling Simulasi mengurangi efek ini dengan memutar ulang aktivitas jaringan sendiri.
Variabilitas Jaringan Tingkat-1
Interkoneksi jaringan umumnya sangat stabil dan memiliki dampak yang minimal, tetapi permintaan lintas geografis, yaitu pengukuran performa situs China dari AS, dapat mulai mengalami tingkat latensi yang tinggi yang berasal dari hop jaringan tingkat-1. Throttling yang diterapkan akan menyamarkan sebagian efek ini dengan throttling jaringan. Throttling Simulasi mengurangi efek ini dengan memutar ulang aktivitas jaringan sendiri.
Variabilitas Server Web
Server web memiliki beban variabel dan tidak selalu merespons dengan penundaan yang sama. Situs dengan traffic lebih rendah dengan infrastruktur hosting bersama biasanya lebih rentan terhadap hal ini. Throttling yang Diterapkan menyamarkan sebagian efek ini dengan menerapkan latensi permintaan minimum dalam throttling jaringannya. Throttling Simulasi rentan terhadap efek ini, tetapi dampak keseluruhan biasanya rendah jika dibandingkan dengan variabilitas jaringan lainnya.
Variabilitas Hardware Klien
Hardware tempat halaman web dimuat dapat sangat memengaruhi performa. Throttling yang diterapkan tidak dapat berbuat banyak untuk memitigasi masalah ini. Throttling Simulasi mengurangi sebagian masalah ini dengan membatasi waktu eksekusi teoretis tugas CPU selama simulasi.
Pertentangan Resource Klien
Aplikasi lain yang berjalan di mesin yang sama saat Lighthouse berjalan dapat menyebabkan pertentangan untuk CPU, memori, dan resource jaringan. Malware, ekstensi browser, dan software anti-virus memiliki dampak yang sangat kuat terhadap performa web. Lingkungan server multi-tenant (seperti Travis, AWS, dll.) juga dapat mengalami masalah ini. Menjalankan beberapa instance Lighthouse sekaligus biasanya juga akan mendistorsi hasil karena masalah ini. Throttling yang diterapkan rentan terhadap masalah ini. Throttling Simulasi mengurangi sebagian masalah ini dengan memutar ulang aktivitas jaringan sendiri dan membatasi eksekusi CPU.
Nondeterminisme Browser
Browser memiliki variabilitas yang melekat dalam eksekusi tugas yang memengaruhi cara pemuatan halaman web. Hal ini tidak dapat dihindari untuk throttling yang diterapkan karena di penghujung hari mereka hanya melaporkan apa pun yang diamati oleh browser. Throttling Simulasi dapat mengurangi sebagian efek ini dengan menyimulasikan eksekusi sendiri, dengan hanya menggunakan kembali waktu eksekusi tugas dari browser dalam perkiraannya.
Pengaruh Strategi Throttling
Di bawah ini adalah tabel yang berisi beberapa sumber umum variabilitas metrik, dampak umum yang dihasilkannya terhadap hasil, dan sejauh mana strategi throttling Lighthouse yang berbeda dapat mengurangi efeknya. Pelajari lebih lanjut berbagai strategi throttling di dokumentasi throttling kami.
Sumber | Dampak | Simulasi Throttling | Throttling yang Diterapkan | Tanpa Throttling |
---|---|---|---|---|
Nondeterminisme halaman | Tinggi | TIDAK ADA MITIGASI | TIDAK ADA MITIGASI | TIDAK ADA MITIGASI |
Variabilitas jaringan lokal | Tinggi | MITIGASI | MITIGASI KHUSUS | TIDAK ADA MITIGASI |
Variabilitas jaringan tingkat-1 | Sedang | MITIGASI | MITIGASI KHUSUS | TIDAK ADA MITIGASI |
Variabilitas server web | Rendah | TIDAK ADA MITIGASI | MITIGASI KHUSUS | TIDAK ADA MITIGASI |
Variabilitas hardware klien | Tinggi | MITIGASI KHUSUS | TIDAK ADA MITIGASI | TIDAK ADA MITIGASI |
Pertentangan resource klien | Tinggi | MITIGASI KHUSUS | TIDAK ADA MITIGASI | TIDAK ADA MITIGASI |
Nondeterminisme browser | Sedang | MITIGASI KHUSUS | TIDAK ADA MITIGASI | TIDAK ADA MITIGASI |
Strategi untuk Menangani Varian
Pisahkan Faktor Eksternal
- Sebisa mungkin pisahkan halaman Anda dari pengaruh pihak ketiga. Tidak pernah menyenangkan disalahkan atas kegagalan variabel orang lain.
- Mengisolasi nondeterminisme kode Anda sendiri selama pengujian. Jika Anda memiliki animasi yang muncul secara acak, angka performa Anda mungkin juga acak.
- Pisahkan server pengujian Anda dari sebanyak mungkin ketidakstabilan jaringan. Gunakan localhost atau mesin di jaringan yang sama persis setiap kali masalah stabilitas.
- Pisahkan lingkungan klien Anda dari pengaruh eksternal seperti perangkat lunak anti-virus dan ekstensi browser. Gunakan perangkat khusus untuk pengujian jika memungkinkan.
Jika resource di komputer Anda sangat terbatas, atau jika membuat lingkungan yang bersih menjadi sulit, gunakan lingkungan lab yang dihosting seperti PageSpeed Insights atau WebPageTest untuk menjalankan pengujian Anda. Dalam situasi continuous integration, gunakan server khusus jika memungkinkan. Lingkungan CI gratis dan instance yang "burstable" biasanya cukup tidak stabil.
Jalankan Lighthouse Beberapa Kali
Saat membuat batas untuk kegagalan, baik mental maupun terprogram, gunakan nilai agregat seperti median, persentil ke-90, atau bahkan min, bukan pengujian tunggal.
Median skor Lighthouse 5 run dua kali lebih stabil dari 1 run, dan alat seperti pwmetrics dapat menjalankan Lighthouse untuk Anda secara otomatis. Menggunakan nilai minimum juga merupakan peningkatan besar dibandingkan tidak menguji sama sekali dan sangat mudah diimplementasikan. Cukup jalankan Lighthouse hingga 5 kali sampai lulus.