Dalam beberapa bulan, situs berita terkemuka di Inggris Raya berhasil meningkatkan CLS persentil ke-75 mereka sebesar 250% dari 0,25 menjadi 0,1.
Tantangan stabilitas visual
Pergeseran tata letak bisa sangat mengganggu. Stabilitas visual Telegraph Media Group (TMG) sangat penting karena pembaca lebih sering menggunakan aplikasi kami untuk membaca berita. Jika tata letak bergeser saat membaca artikel, pembaca kemungkinan akan kehilangan tempatnya. Hal ini bisa menjadi pengalaman yang menjengkelkan dan mengganggu.
Dari sudut pandang teknis, memastikan halaman tidak bergeser dan mengganggu pembaca bukanlah hal yang mudah, terutama saat area aplikasi Anda dimuat secara asinkron dan ditambahkan ke halaman secara dinamis.
Di TMG, kami memiliki beberapa tim yang berkontribusi pada kode sisi klien:
- Core engineering. Menerapkan solusi pihak ketiga untuk mendukung area seperti rekomendasi konten dan komentar.
- Pemasaran. Menjalankan pengujian A/B untuk menilai cara pembaca berinteraksi dengan fitur atau perubahan baru.
- Iklan. Mengelola permintaan iklan dan pra-bidding iklan.
- Editorial. Menyematkan kode dalam artikel seperti tweet atau video, serta widget kustom (misalnya, pelacak kasus virus Corona).
Memastikan masing-masing tim ini tidak menyebabkan tata letak halaman terguncang bisa menjadi hal yang sulit. Dengan menggunakan metrik Pergeseran Tata Letak Kumulatif untuk mengukur seberapa sering terjadinya bagi pembaca kami, tim mendapatkan lebih banyak insight tentang pengalaman pengguna yang sebenarnya dan tujuan yang jelas yang harus diupayakan. Hal ini menghasilkan CLS persentil ke-75 yang meningkat dari 0,25 menjadi 0,1 dan bucket penerusan kami meningkat dari 57% menjadi 72%.
250%
Peningkatan CLS persentil ke-75
15%
Lebih banyak pengguna dengan skor CLS yang baik
Tempat kami memulai
Dengan menggunakan dasbor CrUX, kami dapat menyimpulkan bahwa halaman kami bergeser lebih banyak dari yang kami inginkan.
Idealnya, kami ingin setidaknya 75% pembaca mendapatkan pengalaman "baik", sehingga kami mulai mengidentifikasi penyebab ketidakstabilan tata letak.
Cara kami mengukur pergeseran tata letak
Kami menggunakan kombinasi Chrome DevTools dan WebPageTest untuk membantu mengenali penyebab perubahan tata letak. Di DevTools, kami menggunakan bagian Pengalaman di tab Performa untuk menandai setiap instance pergeseran tata letak dan caranya berkontribusi pada skor keseluruhan.
WebPageTest berguna menyoroti tempat terjadinya pergeseran tata letak dalam tampilan linimasa saat "Highlight Layout Shifts" dipilih.
Setelah meninjau setiap shift di template yang paling sering dikunjungi, kami mendapatkan daftar ide tentang cara meningkatkannya.
Mengurangi pergeseran tata letak
Kami berfokus pada empat area yang dapat kami gunakan untuk mengurangi pergeseran tata letak: - iklan - gambar - header - sematan
Iklan
Iklan dimuat setelah penggambaran awal melalui JavaScript. Beberapa kontainer yang dimuat tidak memiliki tinggi yang dicadangkan.
Meskipun tidak tahu tinggi pastinya, kita dapat menghemat ruang dengan menggunakan ukuran iklan paling umum yang dimuat dalam slot.
Kami telah salah menilai tinggi rata-rata iklan dalam beberapa kasus. Untuk pembaca tablet, slot ini menyusut.
Kami meninjau kembali slotnya dan menyesuaikan tingginya untuk menggunakan ukuran yang paling umum.
Gambar
Banyak gambar di situs dimuat dengan lambat dan ruangnya dicadangkan untuk gambar tersebut.
Namun, gambar inline di bagian atas artikel tidak memiliki ruang yang dicadangkan di penampung, dan juga tidak memiliki atribut lebar dan tinggi yang terkait dengan tag. Hal ini menyebabkan tata letak bergeser saat dimuat.
Hanya menambahkan atribut lebar dan tinggi ke gambar akan memastikan tata letak tidak bergeser.
Header
Header berada di bawah konten dalam markup dan diposisikan di bagian atas menggunakan CSS. Ide awalnya adalah memprioritaskan pemuatan konten sebelum navigasi, tetapi hal ini menyebabkan halaman bergeser sesaat.
Memindahkan header ke bagian atas markup memungkinkan halaman dirender tanpa geser ini.
Penyematan
Beberapa sematan yang sering digunakan memiliki rasio aspek yang ditentukan. Misalnya, video YouTube. Saat pemutar dimuat, kami menarik thumbnail dari YouTube dan menggunakannya sebagai placeholder saat video dimuat.
Mengukur dampak
Kami dapat mengukur dampak pada tingkat fitur dengan cukup mudah menggunakan alat yang disebutkan di awal artikel. Namun, kami ingin mengukur CLS di tingkat template dan di tingkat situs. Secara sintetis, kami menggunakan SpeedCurve untuk memvalidasi perubahan baik dalam praproduksi maupun produksi.
Selanjutnya, kami dapat memvalidasi hasil dalam data RUM (disediakan oleh mPulse) setelah kode mencapai produksi.
Dengan memeriksa data RUM, kami memiliki tingkat keyakinan yang baik bahwa perubahan yang kami lakukan berdampak positif bagi pembaca kami.
Angka terakhir yang kami lihat adalah data RUM yang dikumpulkan Google. Hal ini sangat relevan sekarang karena akan segera berdampak pada peringkat halaman. Sebagai permulaan, kami menggunakan Laporan UX Chrome, baik dalam data tingkat asal bulanan yang tersedia melalui dasbor CrUX, maupun dengan membuat kueri BigQuery untuk mengambil data p75 historis. Dengan cara ini, kami dapat dengan mudah melihat bahwa untuk semua traffic yang diukur oleh CrUX, CLS persentil ke-75 kami meningkat 250% dari 0,25 menjadi 0,1 dan bucket penerusan kami meningkat dari 57% menjadi 72%.
Selain itu, kami dapat menggunakan Chrome UX Report API dan membuat beberapa dasbor internal yang dibagi menjadi beberapa template.
Menghindari regresi CLS
Aspek penting dalam melakukan peningkatan performa adalah menghindari regresi. Kami telah menyiapkan beberapa anggaran performa dasar untuk metrik utama dan menyertakan CLS di dalamnya.
Jika pengujian melebihi anggaran, pengujian akan mengirim pesan ke saluran Slack sehingga kami dapat menyelidiki penyebabnya. Kami juga telah menyiapkan laporan mingguan, sehingga meskipun template tetap dalam anggaran, kami mengetahui adanya perubahan yang memiliki dampak negatif.
Kami juga berencana memperluas anggaran untuk menggunakan data RUM serta data sintetis, menggunakan mPulse untuk menetapkan pemberitahuan statis dan kemungkinan deteksi anomali yang akan membuat kami mengetahui perubahan apa pun yang tidak biasa.
Penting bagi kami untuk menerapkan fitur baru dengan mempertimbangkan CLS. Banyak perubahan yang telah saya sebutkan adalah perubahan yang harus kami perbaiki setelah dirilis kepada pembaca kami. Stabilitas tata letak akan menjadi pertimbangan untuk desain solusi fitur baru apa pun ke depannya, sehingga kita dapat menghindari pergeseran tata letak yang tidak terduga sejak awal.
Kesimpulan
Peningkatan yang telah kami lakukan sejauh ini cukup mudah untuk diterapkan dan memiliki dampak yang signifikan. Banyak perubahan yang telah saya uraikan dalam artikel ini tidak memakan banyak waktu dan diterapkan ke semua template yang paling umum digunakan yang berarti perubahan tersebut memberikan dampak positif yang luas bagi pembaca kami.
Masih ada bagian situs yang harus kami tingkatkan. Kami sedang mempelajari cara agar dapat melakukan lebih banyak hal untuk sisi server logika sisi klien yang akan lebih meningkatkan CLS. Kami akan terus melacak dan memantau metrik kami dengan tujuan untuk terus meningkatkannya dan memberikan pengalaman pengguna terbaik kepada pembaca kami.