Pernyataan Masalah dan Konteks yang Berlaku
Sebuah halaman produk e-commerce memiliki data field seluler 28 hari dengan p75 LCP 4,1 detik, INP 320 milidetik, dan CLS 0,06. Desktop lolos ketiga metrik tersebut. Pengujian Lighthouse lokal oleh developer melaporkan LCP 1,8 detik, TBT 80 milidetik, dan CLS 0,01. Jelaskan bagaimana Anda akan merekonsiliasi diskrepansi tersebut, menemukan akar penyebab LCP dan INP, mengurutkan perbaikan, dan membuktikan bahwa perubahan yang di-deploy meningkatkan pengalaman pengguna nyata.
Gunakan ambang batas Core Web Vitals "baik" saat ini: hitung persentil ke-75 secara terpisah untuk seluler dan desktop, dengan LCP pada atau di bawah 2,5 detik, INP pada atau di bawah 200 milidetik, dan CLS pada atau di bawah 0,1. Angka-angka ini adalah asumsi wawancara, bukan pengukuran dari perusahaan nyata mana pun. Tujuannya bukan untuk menghafal daftar periksa optimasi, melainkan menghubungkan distribusi pengguna, komponen metrik, pekerjaan browser, dan validasi ke dalam rantai diagnostik yang dapat diuji kebenarannya (falsifiable).
Pertanyaan ini cocok untuk wawancara frontend senior, performa web, dan full-stack. Kandidat harus memahami network waterfall, main thread, dan layout, sekaligus menyadari bahwa satu pengujian Lighthouse tidak dapat mengesampingkan data pengguna nyata dan bahwa TBT bukanlah INP.
Hal yang Dievaluasi Pewawancara
Pertama, dapatkah kandidat menormalisasi bukti sebelum bertindak? Jawaban yang kuat menetapkan apakah data field mewakili satu URL, grup URL, atau seluruh origin, kemudian melakukan segmentasi berdasarkan seluler versus desktop, template rute, tingkatan perangkat, jaringan, geografi, dan rilis. Jawaban yang lemah menyatakan masalah tidak ada hanya karena skor Lighthouse lokal berwarna hijau.
Kedua, dapatkah kandidat memetakan setiap metrik ke bottleneck yang berbeda? LCP berkaitan dengan kapan konten utama muncul. INP mencakup total penundaan dari interaksi hingga frame ter-render berikutnya. CLS mencakup pergeseran visual yang tidak terduga. Metrik-metrik tersebut berbagi sebagian beban main thread dan rendering, tetapi "mengurangi ukuran bundle" tidak dapat menjelaskan setiap kegagalan.
Ketiga, dapatkah kandidat mengatribusikan latensi? LCP dapat diuraikan menjadi TTFB, resource load delay, resource load duration, dan element render delay. Latensi satu interaksi dapat diuraikan menjadi input delay, processing duration, dan presentation delay. Perbaikan harus menargetkan komponen yang abnormal, bukan item acak dari daftar periksa performa.
Keempat, dapatkah kandidat menggunakan alat field dan lab dengan benar? RUM dan CrUX mengidentifikasi apa yang dialami pengguna nyata. DevTools, Lighthouse, dan skenario pengujian dengan perangkat terbatas yang dapat direproduksi membantu menjelaskan penyebabnya. Tanpa input pengguna nyata, Lighthouse tidak dapat mengukur INP; sinyal laboratorium seperti TBT adalah alat bantu diagnostik.
Kelima, dapatkah kandidat membuktikan peningkatan alih-alih sekadar menunjukkan adanya deployment? Setelah rilis, bandingkan distribusi RUM apel-ke-apel berdasarkan versi atau kohort rollout, periksa guardrail error dan bisnis, lalu biarkan data field rolling 28 hari mengonfirmasi perubahan tersebut. Satu snapshot, rata-rata yang lebih rendah, atau satu ponsel yang lebih cepat tidak membuktikan bahwa p75 lolos.
Pertanyaan Klarifikasi Sebelum Menjawab
- Apa cakupan data field? Hasil URL, grup URL, dan origin bisa berbeda. Jika 4,1 detik milik origin, halaman produk belum terbukti sebagai penyebabnya. Jika itu milik template produk, lakukan segmentasi lebih lanjut pada trafik template tersebut.
- Perangkat, jaringan, dan wilayah mana yang menyumbang sampel seluler? Kegagalan yang terbatas pada perangkat kelas bawah atau satu wilayah memerlukan reproduksi dan prioritas yang berbeda. Menggabungkan seluler dan desktop akan menyembunyikan masalah.
- Kapan metrik mengalami regresi? Keselarasan dengan rilis, skrip pihak ketiga, pipeline gambar, atau perubahan komposisi trafik mempersempit hipotesis. Nilai rolling 28 hari tidak menunjukkan efek langsung dari satu rilis secara tepat.
- Apa elemen LCP dan interaksi INP lambat yang sebenarnya? Hero image, teks judul, dan kontainer yang di-render di sisi klien memerlukan perbaikan yang berbeda. Tombol tambah-ke-keranjang, pemilihan varian, dan input pencarian juga mengeksekusi jalur main thread yang berbeda.
- Bagaimana Lighthouse dijalankan? Pembatasan (throttling) perangkat dan jaringan, cache, autentikasi, data halaman, dan alur yang diuji harus menyerupai populasi yang lambat. Satu cold load pada laptop cepat tidak mewakili distribusi seluler.
- Lapisan mana yang boleh diubah oleh tim? Tim khusus frontend tetap harus mengukur TTFB tetapi tidak bisa berpura-pura dapat memperbaiki origin secara langsung. Jika CDN, server rendering, dan layanan gambar berada dalam cakupan, rencana dapat mencakup seluruh critical path.
- Apa yang mendefinisikan rilis yang sukses? Di sini, ketiga metrik p75 seluler harus berstatus baik sementara tingkat error, konversi, dan aksesibilitas tetap aman. Merender hero image yang salah lebih awal atau memblokir interaksi penting bukanlah sebuah keberhasilan.
Jawaban 30 Detik
"Pertama, saya akan memverifikasi apakah 4,1 detik dan 320 milidetik merupakan data field tingkat URL seluler atau tingkat origin, kemudian melakukan segmentasi berdasarkan template rute, perangkat, jaringan, dan rilis. TBT Lighthouse bukanlah INP, jadi hasil lokal tidak bisa mengabaikan masalah pengguna nyata. Saya akan menggunakan RUM untuk mengidentifikasi elemen LCP dan interaksi paling lambat yang sebenarnya, lalu mengambil trace jaringan dan Performance pada perangkat yang sebanding. Saya akan memecah LCP menjadi TTFB, discovery, download, dan rendering, serta memecah INP menjadi input, pemrosesan event, dan presentasi frame berikutnya. CLS sudah lolos di angka 0,06, sehingga menjadi guardrail regresi alih-alih investasi pertama. Terakhir, saya akan melakukan rollout bertahap, membandingkan p75 RUM dan guardrail secara apel-ke-apel, dan menunggu jendela CrUX 28 hari untuk mengonfirmasinya."
Pembahasan Mendalam Langkah demi Langkah
Langkah 1: Jelaskan bagaimana hasil field dan lab bisa sama-sama benar
Data field dua puluh delapan hari menggabungkan perangkat pengguna nyata, jaringan, status cache, siklus hidup halaman, dan interaksi. LCP p75 seluler sebesar 4,1 detik berarti sekitar seperempat kunjungan relevan yang paling lambat berada pada 4,1 detik atau lebih buruk. Ini tidak berarti bahwa satu "ponsel umum" membutuhkan waktu tepat 4,1 detik. Data desktop yang lolos menunjukkan bahwa kegagalan mungkin terkonsentrasi pada CPU terbatas, jaringan seluler, template seluler, atau user journey seluler.
Lighthouse lokal adalah eksperimen terkontrol. Alat ini dapat diulang dan berguna untuk melihat waterfall serta deteksi regresi, tetapi ini hanya mewakili satu konfigurasi perangkat dan jaringan. Tanpa input pengguna, Lighthouse tidak dapat menghasilkan INP secara langsung. TBT sebesar 80 milidetik adalah sinyal lab tentang pemblokiran main thread. Sebuah halaman mungkin memiliki TBT awal yang rendah tetapi menjalankan tugas 300 milidetik saat pengguna membuka pemilih varian. Hal sebaliknya juga dimungkinkan: TBT lab yang tinggi dapat terjadi pada saat hanya sedikit pengguna nyata yang berinteraksi.
Pertama, konfirmasikan di PageSpeed Insights atau platform data apakah hasilnya merupakan data URL, origin, atau grup URL, lalu periksa seluler dan desktop secara terpisah. Kemudian gunakan RUM pihak pertama untuk melakukan segmentasi berdasarkan template halaman, tingkatan perangkat, jenis koneksi efektif, geografi, jenis navigasi, dan rilis aplikasi. Setiap dimensi membutuhkan sampel yang cukup dan batasan privasi yang jelas. Diagnosis performa tidak membenarkan pengumpulan query string lengkap, teks yang diketik, atau identitas pengguna.
Langkah 2: Bangun RUM yang mengatribusikan masalah alih-alih hanya melaporkan skor
Implementasi minimal dapat melaporkan ketiga metrik melalui web-vitals. Kode berikut identik di kedelapan versi bahasa:
import { onCLS, onINP, onLCP } from 'web-vitals';
function sendToAnalytics(metric) {
const body = JSON.stringify({
name: metric.name,
value: metric.value,
id: metric.id,
rating: metric.rating,
route: location.pathname,
});
(navigator.sendBeacon && navigator.sendBeacon('/rum', body)) ||
fetch('/rum', { body, method: 'POST', keepalive: true });
}
onCLS(sendToAnalytics);
onINP(sendToAnalytics);
onLCP(sendToAnalytics);Contoh ini menggunakan location.pathname agar mudah dibaca. Kode produksi harus memetakannya ke template rute bervariasi rendah (low-cardinality) seperti /products/:id dan menyertakan rilis, tingkatan perangkat, serta bidang atribusi yang diperlukan. Jangan mengirimkan parameter kueri, teks DOM, atau informasi identitas pengguna. metric.id membantu membedakan event metrik untuk suatu kunjungan halaman, tetapi layanan penerima tetap memerlukan aturan sampling dan deduplikasi laporan yang eksplisit.
Menyimpan hanya name dan value tidak cukup untuk memperbaiki regresi. LCP membutuhkan elemen dan empat komponen waktu. INP membutuhkan target interaksi dan tiga komponen waktu. CLS membutuhkan elemen yang bergeser dan fase siklus hidupnya. Gunakan build atribusi atau produk RUM yang ada untuk menambahkan bidang tersebut. Pada saat agregasi, hitung persentil dari metrik akhir setiap navigasi. Jangan menghitung p75 untuk setiap komponen secara independen lalu menjumlahkannya: pengamatan persentil tersebut dapat berasal dari kunjungan yang berbeda.
Langkah 3: Diagnosis LCP dengan empat komponen waktu
Satu navigasi seluler lambat yang representatif menunjukkan TTFB 0,6 detik, resource load delay 1,5 detik, resource load duration 0,9 detik, dan element render delay 1,3 detik, dengan total LCP 4,3 detik. Komponen-komponen ini berasal dari navigasi yang sama, sehingga dapat dijumlahkan. Ini bukanlah empat nilai p75 yang independen.
Dua komponen mencurigakan terbesar adalah load delay dan render delay. Periksa apakah hero image baru disisipkan setelah JavaScript klien berjalan atau dimuat secara lazy-load secara keliru. Untuk gambar, tempatkan <img> beserta src atau srcset di HTML awal, berikan sizes yang benar, jangan gunakan lazy-load pada gambar LCP di atas batas lipatan (above-the-fold), dan gunakan fetchpriority yang lebih tinggi hanya untuk sumber daya yang benar-benar kritis. Jika CSS adalah satu-satunya jalur penemuan, evaluasi preload yang presisi. Melakukan preload pada setiap gambar besar membuat sumber daya kritis saling berebut bandwidth.
Waktu 1,3 detik lainnya berlalu setelah sumber daya selesai diunduh, sehingga kompresi gambar lebih lanjut mungkin hanya mengalihkan waktu ke render delay. Periksa JavaScript sinkron, pembatas rendering sisi klien, style yang memblokir, font, dan state yang menyembunyikan hero. Me-render konten hero yang terlihat di sisi server, mengurangi CSS kritis, dan menunda hidrasi non-kritis dapat membantu, tetapi trace baru harus membuktikan bahwa komponen target benar-benar turun. TTFB 0,6 detik tetap perlu dipantau. Prioritasnya lebih rendah daripada penundaan 1,5 dan 1,3 detik yang terukur dalam sampel ini; metrik ini tidak sepenuhnya dikecualikan dari optimasi.
Langkah 4: Diagnosis INP dengan tiga komponen waktu
Satu interaksi lambat "pilih varian" yang representatif memakan waktu 350 milidetik: 140 milidetik input delay, 120 milidetik pemrosesan event, dan 90 milidetik presentation delay. Ketiga komponen berasal dari satu interaksi, sehingga penjumlahannya bermakna. INP p75 field sebesar 320 milidetik adalah agregat terpisah dan tidak dapat digantikan oleh trace ini.
Input delay menunjukkan bahwa pekerjaan lain telah membebani main thread saat pengguna bertindak. Rekam trace Performance mulai dari sebelum interaksi dan cari evaluasi skrip, tag pihak ketiga, timer, atau long task hidrasi. Pecah pekerjaan yang dapat diinterupsi menjadi tugas-tugas yang lebih kecil, tunda pekerjaan non-kritis, dan hindari menumpuknya selama startup. Hanya memperpendek handler klik saat ini tidak akan menghilangkan 140 milidetik yang dihabiskan untuk menunggu sebelum handler tersebut dimulai.
Durasi pemrosesan adalah milik callback event. Pindahkan pembaruan visual state yang dipilih atau feedback pemuatan ke frame berikutnya sebelum analisis inventaris, pembaruan rekomendasi, atau logging; hapus komputasi duplikat dan perkecil cakupan pembaruan state. Untuk presentation delay, periksa pembaruan DOM yang besar, forced synchronous layout, dan layout thrashing. Kelompokkan pembacaan dan penulisan DOM serta perkecil area yang harus di-layout dan di-paint untuk interaksi ini. Ubah satu bottleneck terukur pada satu waktu dan ulangi alur yang sama untuk membandingkan ketiga komponen.
Langkah 5: Ubah CLS yang sudah baik menjadi guardrail regresi
CLS 0,06 berada di bawah 0,1, sehingga tidak boleh mengalahkan LCP dan INP yang gagal. Metrik ini tetap membutuhkan perlindungan karena pemuatan hero yang lebih awal, komponen gambar pengganti, atau feedback interaksi baru dapat menyebabkan pergeseran layout. Berikan gambar dan video atribut width, height, atau aspect-ratio yang stabil; sediakan ruang untuk iklan, rekomendasi, dan konten asinkron; serta kendalikan perbedaan ukuran antara web font dan fallback.
Kesenjangan antara CLS lab 0,01 dan CLS field 0,06 adalah bukti yang berguna. Lighthouse standar terutama mencakup pemuatan awal, sementara pengguna nyata mungkin melihat pergeseran setelah pemuatan saat menggulir, membuka komponen, atau membiarkan halaman panjang tetap aktif. Gunakan atribusi RUM dan panel Layout Shifts di DevTools untuk mereproduksi skenario tersebut. Pergeseran layout di dalam iframe cross-origin mungkin muncul di CrUX tetapi tidak dapat diatribusikan sepenuhnya melalui Web API halaman utama, jadi periksa konten yang disematkan saat diskrepansi tersebut muncul.
Langkah 6: Urutkan perubahan berdasarkan bukti dan rilis secara bertahap
Jangan membuat proyek "gambar" dan "JavaScript" secara terpisah lalu mengubah semuanya secara paralel. Trace saat ini menunjukkan bahwa penemuan hero yang tertunda di sisi klien dan long task saat startup dapat meningkatkan penundaan muat/render LCP serta input delay INP. Batch pertama dapat menguji satu hipotesis bersama: buat hero dapat ditemukan di HTML awal dan tunda JavaScript yang tidak dibutuhkan layar pertama. Perubahan tetap kecil, klaim kausal tetap dapat diuji, dan kedua metrik yang gagal dapat membaik.
Tuliskan sinyal yang diharapkan untuk setiap perubahan. Kemudahan penemuan hero akan mengurangi resource load delay. Mengurangi long task saat startup akan menurunkan render delay LCP, input delay INP, dan TBT lab. Jika komponen terkait tidak bergerak, jangan klaim perbaikan tersebut atas perubahan skor yang terjadi secara kebetulan. Kualitas gambar, tingkat error, waktu hingga halaman dapat digunakan, konversi, dan aksesibilitas adalah guardrail agar angka performa tidak menyembunyikan penurunan kualitas produk.
Rilis ke satu kohort trafik sambil mempertahankan versi lama yang sebanding atau baseline konkuren. Bandingkan rute, populasi seluler, dan rilis yang sama sambil memastikan bahwa komposisi trafik tidak bergeser secara material. Ketika deployment tumpang tindih dengan perubahan trafik, garis waktu sebelum-dan-sesudah hanya menunjukkan korelasi, bukan sebab-akibat otomatis.
Langkah 7: Selesaikan masalah dengan tiga lapisan bukti
Lapisan pertama adalah guardrail lab pra-merge: tetapkan profil seluler terbatas, status cache, dan interaksi kritis, lalu rekam LCP, TBT, CLS, network waterfall, dan trace Performance. Ini menangkap regresi yang jelas tetapi tidak menggantikan INP nyata.
Lapisan kedua adalah RUM pasca-rilis. Periksa ukuran sampel, sampling yang stabil, dan deduplikasi event metrik, lalu bandingkan p75 LCP, INP, dan CLS untuk template produk seluler beserta komponennya dan guardrail produk. RUM jangka pendek dapat menunjukkan arah tren dengan cepat. Jika sampel tidak mencukupi, laporkan tingkat keyakinan yang belum cukup alih-alih mengklaim bahwa semua pengguna telah lolos.
Lapisan ketiga adalah konfirmasi rolling 28 hari di CrUX atau Search Console. Kunjungan lama keluar dari jendela data secara bertahap, sehingga metrik tidak langsung melompat ke kondisi stabil barunya pada hari deployment. Lolos berarti seluler dan desktop secara terpisah memenuhi ketiga target p75: LCP ≤ 2,5 detik, INP ≤ 200 milidetik, dan CLS ≤ 0,1. Memperbaiki LCP tidak boleh mendorong CLS dari 0,06 hingga melewati ambang batasnya. Catat kriteria rollback dan segmen lambat yang tersisa sehingga kelulusan agregat tidak menyembunyikan masalah pada perangkat kelas bawah.
Contoh Jawaban Berkualitas Tinggi
"Saya tidak akan menggunakan hasil Lighthouse lokal yang hijau untuk mengabaikan data field seluler. Pertama, saya akan menentukan apakah 4,1 detik milik URL detail produk, grup URL, atau origin, lalu melakukan segmentasi seluler berdasarkan perangkat, jaringan, wilayah, dan rilis. p75 selama 28 hari adalah distribusi, bukan satu perangkat, dan TBT Lighthouse bukanlah INP.
Saya akan menambahkan atribusi RUM untuk mengidentifikasi elemen LCP dan interaksi paling lambat yang sebenarnya, lalu mengambil trace pada perangkat yang sebanding. Misalkan satu navigasi lambat memiliki komponen LCP 0,6, 1,5, 0,9, dan 1,3 detik. Saya akan mengatasi discovery delay 1,5 detik dan render delay 1,3 detik terlebih dahulu: tempatkan hero image di HTML awal, hapus lazy loading di atas batas lipatan, dan kurangi pekerjaan klien yang memblokir paint-nya. Mengompresi gambar yang sudah selesai diunduh bukanlah langkah pertama saya.
Untuk INP, saya akan membagi interaksi lambat menjadi input delay, pemrosesan, dan presentasi. Jika nilainya 140, 120, dan 90 milidetik, saya akan mencari pekerjaan startup yang membebani main thread sebelum interaksi terjadi, lalu memperpendek callback dan mengurangi layout serta paint untuk pembaruan tersebut. CLS sudah lolos di angka 0,06, jadi dimensi gambar dan placeholder konten asinkron tetap menjadi penjaga regresi.
Saya akan merilis ke kohort kecil, mewajibkan setiap perubahan untuk menggerakkan komponen waktu yang diprediksi, dan membandingkan versi dengan RUM apel-ke-apel serta guardrail produk. Performance budget di lab mencegah regresi pra-merge, RUM memberikan sinyal pengguna nyata yang cepat, dan jendela CrUX 28 hari memberikan konfirmasi akhir. Saya menutup masalah ini hanya ketika p75 LCP, INP, dan CLS seluler semuanya mencapai 2,5 detik, 200 milidetik, dan 0,1 tanpa menurunkan tingkat error, konversi, atau aksesibilitas."
Kesalahan Umum
- Mengabaikan data field karena Lighthouse lokal lolos → Kedua dataset mencakup pengguna, rentang waktu, dan interaksi yang berbeda → Normalisasi cakupan URL, perangkat, jaringan, rilis, dan metrik terlebih dahulu.
- Mengartikan TBT 80 milidetik sebagai INP 80 milidetik → Lighthouse tidak dapat mengukur INP tanpa interaksi nyata → Gunakan INP field untuk melihat dampak dan TBT beserta trace interaksi untuk diagnosis.
- Hanya melihat rata-rata seluruh situs → Nilai rata-rata menyembunyikan tail seluler dan template yang gagal → Hitung p75 secara terpisah untuk seluler dan desktop, lalu lakukan segmentasi pada grup dengan sampel yang cukup.
- Langsung mengompresi gambar saat LCP lambat → Discovery atau render delay mungkin lebih mendominasi → Pecah LCP menjadi empat komponen dan perbaiki yang abnormal.
- Melakukan preload pada setiap sumber daya di atas batas lipatan → Sumber daya yang dianggap kritis akan saling berebut bandwidth → Tingkatkan prioritas hanya untuk sumber daya LCP yang terkonfirmasi dan periksa kembali waterfall-nya.
- Hanya mengoptimalkan callback klik → Long task sebelum callback dan layout setelahnya tetap berkontribusi → Periksa input, pemrosesan, dan presentasi secara terpisah.
- Memprioritaskan penurunan CLS dari 0,06 ke 0,02 → Upaya terbuang pada metrik yang sudah lolos sementara LCP dan INP masih gagal → Pertahankan guardrail CLS dan prioritaskan metrik yang melewati ambang batas.
- Menjumlahkan empat nilai p75 komponen → Setiap persentil dapat berasal dari kunjungan yang berbeda → Jumlahkan komponen hanya dalam satu navigasi; hitung persentil metrik akhir pada saat agregasi.
- Menyatakan berhasil saat RUM membaik pada hari deployment → Ukuran sampel, komposisi trafik, dan jendela 28 hari belum stabil → Bandingkan kohort rollout, periksa guardrail, dan tunggu konfirmasi field bergulir.
Pertanyaan Lanjutan dan Tanggapan
Pertanyaan Lanjutan 1: Mengapa LCP field buruk padahal beberapa ponsel uji coba tidak dapat mereproduksinya?
Periksa apakah nilai field untuk URL atau origin, apakah template halaman dikelompokkan dengan benar, dan geografi, jaringan, jenis navigasi, atau rilis mana yang memuat sampel lambat. Jika perangkat uji coba melewatkan tail yang sebenarnya, ambil label lingkungan bervariasi rendah dari navigasi RUM yang lambat dan buat ulang kondisi CPU, jaringan, cache, serta status autentikasi yang sebanding. Jika masih tidak dapat direproduksi, pertahankan bukti atribusi online. Menjalankan pengujian berulang kali pada perangkat cepat tidak akan menghilangkan masalah yang ada.
Pertanyaan Lanjutan 2: Hanya satu segmen Android kelas bawah yang gagal INP, sementara p75 global lolos. Haruskah Anda memperbaikinya?
Verifikasi trafik segmen tersebut, kepentingan bisnis, dan keandalan sampel. Ambang batas global yang lolos hanya menggambarkan distribusi agregat, bukan setiap kohort penting. Jika tingkatan perangkat tersebut berisi banyak pengguna berbayar atau INP-nya jauh di atas 500 milidetik, tentukan SLO segmen dan tangani. Jika sampelnya sangat kecil, tingkatkan observabilitas terlebih dahulu. Menjadikan setiap segmen kecil sebagai syarat mutlak rilis akan membiarkan noise sampling menghambat deployment.
Pertanyaan Lanjutan 3: Bagaimana rencana berubah jika elemen LCP adalah teks judul yang menggunakan web font?
Penemuan sumber daya bergeser dari gambar ke font dan style yang memblokir. Periksa kapan request font ditemukan, apakah request melintasi koneksi origin, ukuran file, font-display, dan dimensi fallback font, serta apakah judul menunggu rendering sisi klien. Jangan menyalin rencana fetchpriority gambar. Lakukan preload hanya untuk file font yang benar-benar digunakan layar pertama, dan pastikan ini tidak menyebabkan unduhan duplikat atau menggeser sumber daya yang lebih kritis.
Pertanyaan Lanjutan 4: Interaksi lambat terjadi di dalam iframe pembayaran cross-origin. Apa yang dapat dilakukan halaman utama?
INP dapat mencerminkan latensi pengguna dari interaksi iframe, tetapi batasan cross-origin membatasi atribusi halaman utama. Korelasikan RUM dengan versi sematan dan halaman penampung, gunakan bukti performa dari penyedia atau uji coba yang dapat direproduksi, dan bekerjalah bersama penyedia tersebut. Halaman utama juga dapat mengurangi long task konkuren miliknya sendiri. Tanpa call stack internal, nyatakan batasan buktinya: jangan langsung menyalahkan penyedia secara otomatis atau mengklaim bahwa kode lokal telah memperbaiki iframe.
Pertanyaan Lanjutan 5: Halaman memiliki terlalu sedikit trafik untuk data CrUX tingkat URL. Bagaimana Anda memutuskan apakah halaman tersebut lolos?
Gunakan RUM pihak pertama untuk mengumpulkan metrik per kunjungan dan bidang lingkungan yang diperlukan, dengan melaporkan ukuran sampel dan jendela waktu, sementara pengujian lab untuk alur kritis menjaga dari regresi. Agregasi tingkat template dapat meningkatkan ukuran sampel hanya jika struktur halaman dan user journey sebanding. Dengan data yang tidak mencukupi, Anda dapat membuktikan bahwa trace yang diketahui telah membaik, tetapi Anda tidak dapat mengklaim status CrUX "baik" di tingkat URL.
Pertanyaan Lanjutan 6: Me-render hero lebih awal meningkatkan LCP tetapi memulai hidrasi lebih awal dan memperburuk INP. Bagaimana solusinya?
Itu adalah trade-off metrik yang nyata, jadi pertahankan kedua hasil tersebut. Periksa apakah rendering lebih awal benar-benar membutuhkan hidrasi lebih awal. Sering kali konten statis yang terlihat dapat tiba lebih dulu sementara kode interaksi dimuat sesuai kebutuhan (on demand). Jika interaksi instan merupakan kebutuhan bisnis, tetapkan budget performa di sekitar tindakan kritis pengguna, bagi pekerjaan main thread, dan bandingkan LCP, INP, serta konversi selama rollout. Skor performa gabungan tidak boleh menyembunyikan regresi INP.
Pertanyaan Lanjutan 7: Kebijakan privasi melarang penyimpanan URL lengkap dan target DOM. Apakah RUM masih dapat mendiagnosis masalah tersebut?
Gunakan template rute yang telah ditentukan sebelumnya, enum komponen, jenis interaksi, versi rilis, dan tingkatan perangkat umum. Jangan menyimpan ID produk, parameter kueri, teks, atau pengenal pengguna. Petakan bidang tersebut di sisi klien sebelum melapor, dan tolak nilai dengan variasi tinggi (high-cardinality) di server. Atribusi menjadi kurang presisi, sehingga reproduksi lab harus mengisi celah di sekitar komponen dan alur yang telah terdaftar. Diagnosis performa bukanlah izin untuk memperluas pengumpulan data pribadi.