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

Birleşik Krallık'taki lider haber sitesi, birkaç ay içinde 75. yüzdelik dilimdeki CLS'sini% 250 oranında (0,25'ten 0,1'e) iyileştirdi.

Görsel kararlılıkla ilgili zorluk

Düzen kaymaları çok can sıkıcı olabilir. Telegraph Media Group (TMG)'da görsel kararlılık özellikle önemlidir. Bunun nedeni, okuyucuların haber okumak için çoğunlukla uygulamalarımızı kullanmasıdır. Bir makale okunurken sayfa düzeni değişirse okuyucu muhtemelen yerini kaybeder. Bu durum can sıkıcı ve dikkat dağıtıcı olabilir.

Mühendislik açısından, sayfaların kaymaması ve okuyucunun dikkatini dağıtmaması özellikle uygulamanızın alanları eşzamansız olarak yüklendiğinde ve sayfaya dinamik olarak eklendiğinde zor olabilir.

TMG'de istemci tarafında kod katkısında bulunan birden fazla ekibimiz var:

  • Temel mühendislik. İçerik önerileri ve yorumlar gibi alanları güçlendirmek için üçüncü taraf çözümleri uygulama
  • Pazarlama. Okuyucularımızın yeni özellikler veya değişikliklerle nasıl etkileşime girdiğini değerlendirmek için A/B testleri çalıştırıyoruz.
  • Reklamcılık. Reklam isteklerini ve reklam ön tekliflerini yönetme.
  • Yazım. Tweet'ler veya videolar gibi makalelerin yanı sıra özel widget'lar (ör. Koronavirüs vaka takipçisi) içine kod yerleştirme

Bu ekiplerin her birinin sayfanın düzeninin bozulmasına neden olmamasının sağlanması zor olabilir. Okuyucularımız için bu durumun ne sıklıkta gerçekleştiğini ölçmek amacıyla kümülatif düzen kayması metriğini kullanan ekipler, gerçek kullanıcı deneyimi hakkında daha fazla bilgi edindi ve ulaşmaya çalışacakları net bir hedef belirledi. Bu sayede 75. yüzdelik dilimdeki CLS'miz 0,25'ten 0,1'e yükseldi ve geçen grup% 57'den %72'ye çıktı.

%250

75. yüzdelik dilim CLS iyileştirmesi

%15

İyi CLS puanına sahip daha fazla kullanıcı

Başladığımız yer

CrUX kontrol panellerini kullanarak sayfalarımızın istediğimizden daha fazla kaydığını tespit ettik.

Yaklaşık% 55-60'ı iyi, %15'i iyileştirme gerektiriyor ve% 25'i yetersiz puanları 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ğimizden, düzen kararsızlığının nedenlerini belirlemeye başladık.

Düzen değişikliklerini nasıl ölçtük?

Sayfa düzeninin kaymasına neyin neden olduğunu belirlemek için Chrome Geliştirici Araçları ve WebPageTest'i birlikte kullandık. DevTools'ta, düzenin değiştiği durumları ve bunların genel puana nasıl katkıda bulunduğunu vurgulamak için Performans sekmesinin Deneyim bölümünü kullandık.

Telegraph'un başlığında mavi yer paylaşımıyla vurgulanan bir reklamın yer aldığı ön sayfası.
Chrome Geliştirici Araçları'nın Deneyim bölümünü kullanarak reklamın istemci tarafında başlığın üstünde yüklenmesi nedeniyle oluşan bir düzen kaymasını belirleme.

WebPageTest, "Düzen Değişikliklerini Vurgulayın" seçeneği belirlendiğinde zaman çizelgesi görünümünde düzen değişikliğinin nerede gerçekleştiğini vurgular.

Telegraph web sitesinin WebPageTest film şeridi görünümü. Düzen değişikliği kırmızı bir yer paylaşımıyla vurgulanmıştır.
WebPageTest, düzenin kaydığı yeri vurgulamaktadır.

En çok ziyaret edilen şablonlarımızdaki her değişikliği inceledikten sonra, nasıl iyileştirebileceğimizle ilgili bir fikir listesi oluşturduk.

Düzen kaymalarını azaltma

Düzen değişikliklerini azaltabileceğimiz dört alana odaklandık: - reklamlar - resimler - üstbilgiler - yerleştirilenler

Reklamlar

Reklamlar, ilk boyamadan sonra JavaScript aracılığıyla yüklenir. Yükledikleri kapsayıcılardan bazılarında ayrılmış yükseklik yoktu.

Telegraph web sitesinin animasyonu. Üstüne bir reklam yüklendiğinde hikayeler listesi aşağı itilir.
Reklam yüklendikten sonra reklamın altındaki "Diğer hikayeler" bloğu aşağı kaydırılır.

Tam yüksekliği bilmesek de alana yüklenen en yaygın reklam boyutunu kullanarak alan ayırabiliriz.

Telegraph web sitesinin animasyonu. Reklamın yer tutucu dikdörtgeni, hikaye listesinin üzerine yerleştirilir. Reklam, düzen değişikliğine neden olmadan yer tutucunun yerine yüklenir.
Reklam için yer ayırarak aşağıdaki "Diğer hikayeler" bloğu, reklam yüklenmeden önce ve yüklendikten sonra statik kalır.

Bazı durumlarda reklamın ortalama yüksekliğini yanlış değerlendirmiştik. Tablet okuyucularda ise yuva çöküyordu.

Telegraph web sitesinin tablet görünümü animasyonu. Yer tutucu alanı reklamdan daha büyük olduğundan reklam yüklendikten sonra içerik yukarı kayar.
Tablet boyutundaki cihazlarda okuyucular için yüklendikten sonra reklam alanının daralması.

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

Telegraph web sitesinin tablet görünümü animasyonu. Yer tutucu, reklam boyutuyla eşleştiğinde reklam yüklenirken düzen kaydırma 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 resimlerin çoğu gecikmeli olarak yüklenir ve bunlar için ayrılmış bir alan vardır.

Makale önizleme kartlarının yüklenmesi animasyonunu gösterir.
Düzeni bozmadan resimleri geç yükleme.

Ancak makalelerin üst kısmındaki satır içi resimler, kapsayıcıda ayrılmış bir alana sahip değildi ve etiketlerle ilişkili genişlik ve yükseklik özelliklerine sahip değildi. Bu durum, öğeler yüklenirken düzenin kaymasına neden oluyordu.

Makale sayfasının yüklenmesi animasyonu. Ana resim sayfanın üst kısmına yüklendiğinde metin aşağı doğru hareket eder.
Makalenin ana resminden kaynaklanan bir düzen değişikliği.

Resimlere genişlik ve yükseklik özelliklerini eklemek, düzenin kaymasını önledi.

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

Üstbilgi, işaretlemede içeriğin altındaydı ve CSS kullanılarak en üstte konumlandırıldı. Orijinal fikir, içeriğin yüklenmesine gezinmeden önce öncelik vermekti ancak bu, sayfanın kısa süreliğine kaymasına neden oldu.

ALT_TEXT_HERE
Sayfanın başlığı düzgün şekilde yüklenmiyor.

Başlığı işaretlemenin üst kısmına taşımak, sayfanın bu kayma olmadan oluşturulmasını sağladı.

ALT_TEXT_HERE
Sayfanın yüklenmesinin başlığı artık düzeni bozmuyor.

Yerleştirmeler

Sık kullanılan bazı yerleşik öğelerin belirli bir en boy oranı vardı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ı yüklenirken video oynatıcı yuvası düşük çözünürlüklü bir küçük resim yüklüyor.
Video oynatıcı yüklenirken video oynatıcı alanı düşük çözünürlüklü bir küçük resim yüklüyor.

Etkiyi ölçme

Makalenin başlarında bahsedilen araçları kullanarak bu değişikliğin özelliğin performansına olan etkisini oldukça kolay bir şekilde ölçebildik. Ancak CLS'yi hem şablon düzeyinde hem de site düzeyinde ölçmek istedik. Hem ön prodüksiyonda hem de üretimde değişiklikleri doğrulamak için sentetik olarak SpeedCurve'ı kullandık.

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

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

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

RUM verilerini kontrol etmek, yaptığımız değişikliklerin okuyucularımız üzerinde olumlu bir etkisi olduğuna dair güven düzeyimizi artırır.

İncelediğimiz nihai sayılar, Google'ın topladığı RUM verilerine aittir. Bu, yakında sayfa sıralamasını etkileyeceği için özellikle şu anda önemlidir. Başlangıç olarak, hem CrUX kontrol paneli üzerinden sunulan aylık kaynak düzeyindeki verilerde hem de geçmiş p75 verilerini almak için BigQuery'yi sorgularak Chrome UX Report'ı kullandık. Bu sayede, CrUX tarafından ölçülen tüm trafik için 75. yüzdelik dilim CLS'mizin 0,25'ten 0,1'e çıkarak% 250 oranında iyileştiğini ve geçen gruplarımızın% 57'den%72'ye yükseldiğini kolayca görebildik.

telegraph.co.uk için p75 CLS'nin 0,1 olduğunu gösteren CrUX kontrol paneli.
Crux kontrol panelinden alınan sonuçlar.
BigQuery, p75 değerlerinin ayda 0,25'ten 0,1'e düştüğünü gösteriyor.
2021'den bugüne kadarki p75 değerlerini gösteren BigQuery çalıştırma.

Ayrıca Chrome kullanıcı deneyimi raporu API'sinden yararlanıp şablonlara bölünmüş bazı dahili kontrol panelleri oluşturduk.

Ortalama iyi puanı 76,2, iyileştirme gerektiren puanı 9,3 ve kötü puanı 14,6 olan dahili kontrol paneli.
Chrome UX Report API'yi kullanan ve ortalama puanımızı ve bu şablonu kullanan en kötü performans gösteren sayfaları vurgulayan dahili kontrol panelleri.

CLS gerilemelerini önleme

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

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

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

Ayrıca, hem statik uyarılar hem de olağan dışı değişikliklerden haberdar olmamızı sağlayacak olası anormallik algılama ayarlamak için mPulse'ı kullanarak bütçelerimizi sentetik verilerin yanı sıra RUM verilerini de kullanacak şekilde genişletmeyi planlıyoruz.

Yeni özelliklere CLS'yi göz önünde bulundurarak yaklaşmamız önemlidir. Bahsettiğim değişikliklerin çoğu, okuyucularımıza yayınlandıktan sonra düzeltmek zorunda kaldığımız değişikliklerdir. Baştan itibaren beklenmedik düzen değişikliklerini önleyebilmek için gelecekte tüm yeni özelliklerin çözüm tasarımında düzen kararlılığı dikkate alınacaktır.

Sonuç

Bugüne kadar yaptığımız iyileştirmelerin uygulanması oldukça kolaydı ve önemli bir etki yarattı. Bu makalede özetlediğim birçok değişikliğin uygulanması çok uzun sürmedi ve en sık kullanılan şablonların tümüne uygulandı. Bu da okuyucularımız üzerinde yaygın olarak olumlu bir etki yarattı.

Sitenin iyileştirmemiz gereken alanları var. İstemci tarafı mantığımızın daha fazlasını sunucu tarafında yapabileceğimiz yolları araştırıyoruz. Bu sayede CLS'yi daha da iyileştireceğiz. Metriğimizi sürekli olarak iyileştirmek ve okuyucularımıza mümkün olan en iyi kullanıcı deneyimini sunmak için izlemeye ve takip etmeye devam edeceğiz.