Telegraph Media Group'ta Cumulative Layout Shift'i İyileştirme

Birleşik Krallık'ın önde gelen haber web sitesi birkaç ay içinde 75. yüzdelik dilim CLS'sini% 250 oranında 0,25'ten 0,1'e yükseltmeyi başardı.

Görsel kararlılık sorunu

Düzen kaymaları, çalışmayı kesintiye uğratabilir. Telegraph Media Group'ta (TMG) görsel istikrar özellikle önemli, çünkü okuyucular haberleri izlemek için ağırlıklı olarak uygulamalarımızı kullanıyor. Bir makaleyi okurken düzen değişirse okuyucu yerini büyük olasılıkla kaybeder. Bu, can sıkıcı ve dikkat dağıtıcı bir deneyim olabilir.

Mühendislik açısından bakıldığında, sayfaların değişmemesini ve okuyucuyu kesintiye uğratmamasını sağlamak zor olabilir. Bu durum, özellikle uygulamanızın bölümleri eşzamansız olarak yüklendiğinde ve sayfaya dinamik olarak eklendiğinde zor olabilir.

TMG'de, istemci tarafında kodla katkıda bulunan birden fazla ekip vardır:

  • Temel mühendislik. İçerik önerileri ve yorum yapma gibi alanları desteklemek için üçüncü taraf çözümleri uygulamak.
  • Pazarlama. Okuyucularımızın yeni özellikler veya değişikliklerle nasıl etkileşime girdiğini değerlendirmek için A/B testleri yapma.
  • Reklam. Reklam isteklerini yönetme ve teklif öncesi reklamlar verme.
  • Editoryal. Tweet veya video gibi makalelere ve özel widget'lara (örneğin, Koronavirüs vaka izleyicisi) kod yerleştirme.

Bu ekiplerden her birinin sayfa düzeninin kaymasına neden olmadığından emin olmak zor olabilir. Ekipler, sorunun okuyucularımız için ne sıklıkta gerçekleştiğini ölçmek için Cumulative Layout Shift metriğini kullanarak gerçek kullanıcı deneyimi hakkında daha fazla bilgi sahibi oldu ve ulaşılmak istenen hedefe net bir şekilde karar verdi. Bu sayede 75. yüzdelik CLS değerimiz 0,25'ten 0,1'e yükseldi ve geçme grubumuz% 57'den %72'ye çıktı.

%250

CLS'de 75. yüzdelik iyileşme

%15

CLS puanı iyi olan diğer kullanıcılar

Nereden başladık

CrUX kontrol panellerini kullanarak sayfalarımızın istediğimizden daha fazla değiştiğini gösterebildik.

Yaklaşık% 55-60 iyi, %15'inin iyileştirilmesi gerekiyor ve düşük puanların% 25'ini gösteren CrUX Kontrol Paneli.
Haziran 2020 ile Şubat 2021 arasındaki Cumulative Layout Shift puanlarımız.

İdeal olarak okuyucularımızın en az% 75'inin "iyi" bir deneyim yaşamasını istediğimiz için düzen kararsızlığının nedenlerini belirlemeye başladık.

Düzen kaymalarını nasıl ölçtük?

Düzenin kaymasının nedenini belirlemek için Chrome Geliştirici Araçları ve WebPageTest'i birlikte kullandık. DevTools'da Performans sekmesinin Deneyim bölümünü kullanarak yerleşim değişiminin her bir örneğini ve bunların toplam puana nasıl katkıda bulunduğunu vurguladık.

Başlıkta mavi bir yer paylaşımıyla vurgulanmış bir reklamın gösterildiği Telegraph'ın ön sayfası.
Chrome Geliştirici Araçları'nın Deneyim bölümünü kullanarak, başlığın üstündeki istemci tarafında reklamın yüklenmesinden kaynaklanan düzen kaymasını tanımlama.

WebPageTest, "Düzen Kaymalarını Vurgula" seçildiğinde zaman çizelgesi görünümünde düzen değişikliğinin nerede gerçekleştiğini faydalı bir şekilde vurgular.

Kırmızı yerleşim ile düzen kaydırmanın vurgulandığı Telegraph web sitesinin WebPageTest film şeridi görünümü.
WebPageTest, düzenin kaydığı yeri vurgular.

En çok ziyaret edilen şablonlarımızdaki her değişikliği inceledikten sonra, bunları nasıl geliştirebileceğimize dair fikirlerin bir listesini oluşturduk.

Düzen kaymalarını azaltma

Düzen kaymalarını azaltabileceğimiz dört alana odaklandık: - reklamlar - resimler - başlıklar - yerleştirmeler

Reklamlar

Reklamlar, ilk boyama işleminden sonra JavaScript aracılığıyla yüklenir. Yükledikleri bazı container'ların üzerinde ayrılmış yükseklik yoktu.

Telegraph web sitesinin animasyonu. Hikaye listesi, üzerine bir reklam yüklendiğinde aşağı doğru itilir.
Reklamın altındaki "Diğer haberler" bloğu, reklam yüklendikten sonra aşağı kaydırılıyor.

Yüksekliği tam olarak bilmesek de alana yüklenen en yaygın reklam boyutunu kullanarak yer ayırabiliriz.

Telegraph web sitesinin animasyonu. Hikayeler listesinin üzerine reklama ait bir yer tutucu dikdörtgen yerleştirilir. Reklam, düzen kaymasına neden olmadan yer tutucunun yerine yüklenir.
Reklam için alan ayrıldığında aşağıdaki "Diğer hikayeler" bloğu reklam yüklenmeden önce ve yüklendikten sonra sabit kalır.

Bazı durumlarda reklamın ortalama yüksekliğini yanlış değerlendirmiştik. Tablet okuyucularda yuva daraltılıyordu.

Telegraph web sitesinin tablet görünümünü gösteren animasyon. Yer tutucu alanı reklamdan daha büyük olduğundan içerik, reklam yüklendikten sonra yukarı kayar.
Tablet boyutlu cihazlardaki okuyucular için reklam alanı yüklendikten sonra daraltılıyor.

Alana tekrar göz attık ve yüksekliği en yaygın boyutu kullanacak şekilde ayarladık.

Telegraph web sitesinin tablet görünümünü gösteren animasyon. Yer tutucu reklam boyutuyla eşleşiyorsa reklam yüklendiğinde düzen kayması olmaz.
Reklam alanı için ayırdığımız alanın, reklamın en sık yayınlanan yüksekliğiyle eşleştiğinden emin olun.

Resimler

Web sitesindeki çoğu resim geç yüklenir ve alan bu resimler için ayrılır.

Makale önizleme kartlarının yüklenmesi animasyonu.
Resimleri, düzeni bozmadan geç yükleme.

Ancak, makalelerin üst kısmındaki satır içi resimlerde kapsayıcı üzerinde herhangi bir alan ayrılmamış ve etiketlerle ilişkili genişlik ve yükseklik özellikleri de bulunmuyordu. Bu durum, sayfa yüklenirken düzenin kaymasına neden oldu.

Makale sayfası yükleme animasyonu. Ana resim sayfanın üst kısmından yüklendiğinde metin aşağı hareket eder.
Makalenin ana resminden kaynaklanan bir düzen kayması.

Resimlere genişlik ve yükseklik özelliklerinin eklenmesi bile düzenin kaymamasını sağladı.

Ana resim için ayrılmış yer tutucuyla birlikte yüklenen makale sayfasının animasyonu. Ana resim sayfanın üst kısmında yüklendiğinde herhangi bir düzen kayması olmaz.
Ana makale resmi, düzenin kaymasına neden olmadan yükleniyor.

Başlık, işaretlemedeki içeriğin altında ve CSS kullanılarak üst kısma yerleştirildi. Asıl amaç, içeriğin gezinmeden önce yüklenmesine öncelik vermekti ancak bu, sayfanın bir anda kaymasına neden oldu.

ALT_TEXT_HERE
Sayfanın başlığı düzgün olmayan bir şekilde yükleniyor.

Başlığın işaretlemenin üst kısmına taşınması, sayfanın bu kayma olmadan oluşturulmasına olanak tanıdı.

ALT_TEXT_HERE
Yüklenen sayfanın düzeni artık sayfa düzenini bozmaz.

Yerleştirmeler

Sık kullanılan yerleştirmelerden bazılarının en boy oranı tanımlanmıştır. Örneğin, YouTube videoları. Oynatıcı yüklenirken YouTube'dan küçük resmi alır ve video yüklenirken yer tutucu olarak kullanırız.

Video oynatıcı alanı yüklenirken düşük çözünürlüklü bir küçük resim yükler.
Video oynatıcı yüklenirken video oynatıcı yuvasının düşük çözünürlüklü bir küçük resim yüklemesi.

Etkiyi ölçme

Makalenin başında bahsedilen araçları kullanarak etkiyi özellik düzeyinde kolayca ölçebildik. Ancak, CLS'yi hem şablon düzeyinde hem de site düzeyinde ölçmek istedik. Sentetik olarak, hem üretim öncesi hem de üretim aşamasındaki değişiklikleri doğrulamak için SpeedCurve işlevini kullandık.

CLS puanında ciddi bir düşüş gösteren SpeedCurve grafiği.
CLS ilerleme durumunu SpeedCurve kullanarak sentetik olarak izleme.

Daha sonra kod üretime ulaştığında RUM verilerimizdeki (mPulse tarafından sağlanır) sonuçları doğrulayabiliriz.

CLS puanında düşüşü gösteren mPulse grafiği.
Değişiklik yapmadan önce ve yaptıktan sonra mPulse RUM verileriyle site genelinde CLS iyileştirmelerini doğrulama.

RUM verilerini kontrol etmek, yaptığımız değişikliklerin okuyucularımız üzerinde olumlu etkisi olduğu konusunda bize güven veriyor.

İncelediğimiz son rakamlar Google'ın topladığı RUM verilerine aittir. Bu durum, yakında sayfa sıralamasını etkileyeceği için özellikle şu anda önem taşımaktadır. Başlangıç olarak Chrome Kullanıcı Deneyimi Raporu'nu hem CrUX kontrol paneli aracılığıyla sunulan aylık kaynak düzeyinde verilerle hem de geçmiş p75 verilerini almak için BigQuery'yi sorgulayarak kullandık. Bu şekilde, CrUX tarafından ölçülen tüm trafiğin 75. yüzdelik dilim CLS değerimizin 0,25'ten 0,1'e% 250 arttığını ve geçen paketimizin% 57'den%72'ye yükseldiğini kolayca görebildik.

telegraph.co.uk için p75 CLS değerinin 0.1 olduğunu gösteren CrUX kontrol paneli.
Crux Kontrol Paneli'nden sonuçlar.
0,25'ten 0,1'e kadar her ay iyileşmekte olan p75 değerlerini gösteren BigQuery.
BigQuery çalıştırması, 2021'den bugüne kadar olan p75 değerlerini gösterir.

Ayrıca, Chrome Kullanıcı Deneyimi Raporu API'sinden yararlanmayı ve şablonlara bölünmüş bazı dahili kontrol panelleri oluşturmayı da başardık.

Ortalama 76,2 iyi puanı, 9,3 oranında iyileştirme gerektirdiğini ve 14,6 kötü puanı gösteren dahili kontrol paneli.
Chrome UX Report API'nin kullanıldığı, ortalama puanımızı ve bu şablonun en kötü performans gösteren sayfalarını gösteren dahili kontrol panelleri.

CLS regresyonlarını önleme

Performans iyileştirmeleri yapmanın önemli bir yönü, regresyonlardan kaçınmaktır. Temel metriklerimiz için bazı temel performans bütçeleri oluşturduk ve bunlara CLS'yi dahil ettik.

Yüksek trafik sağlayan şablonlarımızdan bazılarında CLS'yi ölçen sentetik kontrolleri gösteren bir performans bütçesi kontrol paneli. Bütçe şu anda 0,025 olarak ayarlanmıştır.

Test bütçeyi aşarsa nedenini araştırabilmemiz için Slack kanalına bir mesaj gönderir. Ayrıca haftalık raporlar da oluşturduk. Böylece, şablonlar bütçede kalsa bile, olumsuz etkisi olan değişikliklerden haberdarız.

Ayrıca, bütçelerimizi hem RUM verileri hem de sentetik veriler kullanacak şekilde genişletmeyi planlıyoruz. mPulse'ı kullanarak hem statik uyarılar hem de olası anormallik algılama özelliği sayesinde olağan dışı değişikliklerden haberdar olmayı planlıyoruz.

Yeni özelliklere CLS'yi göz önünde bulundurarak yaklaşmak bizim için önemli. Bahsettiğim değişikliklerin birçoğu, okuyucularımıza yayınlandıktan sonra düzeltmemiz gereken değişikliklerdir. Düzen kararlılığı, başlangıçtan itibaren beklenmedik düzen kaymalarını önleyebilmemiz için gelecekte herhangi bir yeni özelliğin çözüm tasarımında dikkate alınacaktır.

Sonuç

Şimdiye kadar yaptığımız iyileştirmelerin uygulanması oldukça kolaydı ve önemli bir etkisi oldu. Bu makalede ana hatlarıyla anlattığım birçok değişikliğin uygulanması fazla zaman almadı ve en sık kullanılan şablonlara uygulandı. Bu da okuyucularımız üzerinde geniş çapta olumlu etki yarattıkları anlamına geliyor.

Sitenin hâlâ iyileştirmemiz gereken alanları var. İstemci taraflı mantığın sunucu tarafında daha fazla işlem yapabileceğimiz ve CLS'yi daha da iyileştirebileceğimiz yolları araştırıyoruz. Sürekli iyileştirmek ve okuyucularımıza mümkün olan en iyi kullanıcı deneyimini sunmak amacıyla metriklerimizi takip etmeye ve izlemeye devam edeceğiz.