The Economic Times, Önemli Web Verileri eşiklerini nasıl geçip toplamda% 43 daha iyi bir hemen çıkma oranına ulaştı?

The Economic Times web sitesinde Core Web Vitals'i optimize etmek, kullanıcı deneyimini önemli ölçüde iyileştirdi ve web sitesinin tamamında hemen çıkma oranını önemli ölçüde düşürdü.

Anshu Sharma
Anshu Sharma
Prashant Mishra
Prashant Mishra
Sumit Gugnani
Sumit Gugnani

İnternet hızları her geçen gün artarken kullanıcılar, web sitelerinin her zamankinden daha hızlı yanıt vermesini ve davranmasını bekliyor. The Economic Times, aylık 45 milyondan fazla etkin kullanıcıya sahiptir. Alan genelinde, AMP ve AMP olmayan sayfalarda Core Web Vitals için optimizasyon yaparak hemen çıkma oranlarını önemli ölçüde azaltmayı ve okuma deneyimini iyileştirmeyi başardık.

Etkiyi ölçme

Kullanıcılarımıza mükemmel bir okuma deneyimi sunmak söz konusu olduğunda en önemli metrikler olan Largest Contentful Paint (LCP) ve Cumulative Layout Shift (CLS)'e odaklandık. The Economic Times, aşağıda açıklanan çeşitli performans düzeltmelerini uyguladıktan sonra Chrome Kullanıcı Deneyimleri (CrUX) rapor metriklerini birkaç ay içinde önemli ölçüde iyileştirmeyi başardı.

Genel olarak CLS, 0,25'ten 0,09'a% 250 oranında iyileşti. Genel olarak LCP iyileşti. 4,5 saniye olan değer% 80 oranında azalarak 2,5 saniyeye düştü.

Ayrıca, "Kötü" aralığındaki LCP değerleri Ekim 2020'den Temmuz 2021'e kadar% 33 oranında azaltıldı:

Ekim 2020'den Temmuz 2021'e kadar aya göre gruplandırılmış LCP dağılımları. "Kötü" olarak sınıflandırılan LCP değerlerinin miktarı% 15,03'ten %10,08'e düşürüldü.

Ayrıca, aynı dönemde "Kötü" aralığındaki CLS değerleri %65 oranında azalırken "İyi" aralığındaki CLS değerleri% 20 oranında arttı:

Ekim 2020'den Temmuz 2021'e kadar aya göre gruplandırılmış CLS dağılımları. "Kötü" olarak sınıflandırılan CLS değerlerinin miktarı% 25,92'den %9'a, "İyi" olarak sınıflandırılan CLS değerlerinin miktarı ise% 62,62'den %76,5'e yükseldi.

Sonuç olarak, daha önce Core Web Vitals eşiklerini karşılamayan The Economic Times, artık kaynağının tamamında Core Web Vitals eşiklerini geçti ve genel olarak hemen çıkma oranlarını% 43 oranında düşürdü.

The Economic Times'ın makale sayfasının öncesi ve sonrası animasyonu.

LCP nedir ve nasıl iyileştirdik?

En büyük öğe, kullanıcı deneyimini iyileştirmek ve yükleme hızını tanımak için en alakalı olanıdır. İlk Zengin İçerikli Boyama (FCP) gibi performans metrikleri yalnızca sayfa yükleme deneyiminin ilk anını yakalar. Öte yandan LCP, kullanıcının gördüğü en büyük resim, metin veya video bölümünün oluşturma süresini bildirir.

Daha hızlı bir DNS sağlayıcıya geçmenin ve resimleri optimize etmenin yanı sıra LCP'yi iyileştirmek için uyguladığımız tekniklerden bazılarını aşağıda bulabilirsiniz.

Önce kritik istekler

Tüm modern tarayıcılar eşzamanlı istek sayısını sınırladığından, geliştiricilerin öncelikli olarak kritik içeriğin yüklenmesine öncelik vermesi gerekir. Karmaşık bir web sayfasını yüklemek için başlık öğeleri, CSS, JavaScript kaynakları, hero resim, makale gövdesi, yorumlar, ilgili diğer haberler, altbilgi ve reklamlar gibi öğeleri indirmemiz gerekir. LCP için hangi öğelerin gerekli olduğunu değerlendirdik ve LCP'yi iyileştirmek amacıyla bu öğelerin önce yüklenmesini tercih ettik. Ayrıca, ilk sayfa oluşturma işleminin bir parçası olmayan çağrıları da erteliyoruz.

Metin görünümü

Hem LCP'yi hem de CLS'yi etkilediği için font-display mülküyle deneme yaptık. font-display: auto;'ü denedikten sonra font-display: swap;'e geçtik. Bu işlem, metni başlangıçta en iyi eşleşen ve mevcut yazı tipinde oluşturur, ardından indirilen yazı tipine geçer. Bu sayede metinlerimiz, ağ hızından bağımsız olarak hızlı bir şekilde oluşturuldu.

Daha iyi sıkıştırma

Brotli, Google tarafından geliştirilen Gzip ve Deflate'ye alternatif bir sıkıştırma algoritmasıdır. Daha küçük bir ayak izi elde etmek için yazı tiplerimizi ve öğelerimizi değiştirdik ve sunucu sıkıştırmasını Gzip'den Brotli'ye geçirdik:

  • JavaScript dosyaları, Gzip'e kıyasla% 15 daha küçüktür.
  • HTML dosyaları, Gzip'e kıyasla% 18 daha küçüktür.
  • CSS ve yazı tipi dosyaları, Gzip'e kıyasla% 17 daha küçüktür.

Üçüncü taraf alanlarıyla önceden bağlantı kurma

preconnect, değerli CPU süresini tüketmeye ve özellikle güvenli bağlantılarda diğer önemli kaynakları geciktirmeye devam edebileceğinden dikkatli kullanılmalıdır.

Ancak üçüncü taraf alanındaki bir kaynak için getirme işleminin gerçekleşeceği biliniyorsa preconnect iyidir. Bu durum yalnızca yüksek trafik alan bir web sitesinde ara sıra gerçekleşiyorsa preconnect gereksiz TCP ve TLS işlemlerini tetikleyebilir. Bu nedenle dns-prefetch, DNS aramalarını önceden yapmak isteyen üçüncü taraf kaynakları (ör. sosyal medya, analizler vb.) için daha uygundu.

Kodu parçalara ayırma

Sitenin başına yalnızca işletme mantığının önemli bir bölümünü içeren veya sayfanın üst kısmının oluşturulması için kritik olan kaynakları yükledik. Ayrıca, kod bölme özelliğiyle kodumuzu parçalara ayırdık. Bu sayede sayfa LCP'sini daha da iyileştirdik.

Daha iyi önbelleğe alma

Tüm ön uç rotaları için, şablonları önbellekten sunan bir Redis katmanı ekledik. Bu, sunucudaki hesaplama süresini azaltır ve her istekte kullanıcı arayüzünün tamamını oluşturur. Böylece, sonraki isteklerde LCP azalır.

LCP hedeflerini ve başarılarını özetleme

Optimizasyon projesine başlamadan önce ekip, 4, 5 saniye olan LCP puanlarını (CrUX rapor alan verilerine göre kullanıcılarının %75'i için) karşılaştırma ölçütü olarak belirledi. Optimizasyon projesinin ardından bu süre 2, 5 saniyeye düşürüldü.

Eylül 2020 ile Haziran 2021 arasındaki LCP dağıtımları. Genel olarak, Chrome Kullanıcı Deneyimi raporunda gözlemlenen LCP değerlerinin 75.yüzdelik diliminde "Kötü" LCP değerlerinde% 8,97 oranında bir düşüş görüldü. 75. yüzdelik dilimde LCP süresinde toplam düşüş 200 milisaniye oldu. LCP değerlerinin% 77, 63'ü "İyi" aralığına düştü.
Kaynak: The Economic Times'ın genel LCP'si için CrUX Raporu

CLS nedir ve bunu nasıl iyileştirdik?

Bir web sitesine göz atarken sayfa içeriğinin beklenmedik bir şekilde hareket ettiğini fark ettiniz mi? Bunun nedenlerinden biri, sayfaya bilinmeyen boyutlarda medya öğelerinin (resimler, videolar, reklamlar vb.) eşzamansız olarak yüklenmesidir. Medya kaynakları yüklendikten sonra sayfanın düzenini değiştirir.

The Economic Times web sitesinde CLS'yi iyileştirmek için uyguladığımız önlemleri ele alacağız.

Yer tutucuları kullanma

Reklam kitaplığı yüklenirken ve sayfa reklamları oluşturulurken sayfa düzeninde kayma olmasını önlemek için bilinen boyutlara sahip reklam birimleri ve medya öğeleri için stillendirilmiş bir yer tutucu kullandık. Bu sayede, reklam için yer ayrılarak düzen kaymalarının önüne geçilir.

The Economic Times web sitesinin mobil telefonda gösterilen yan yana karşılaştırması. Sol tarafta, makale lokomotif resmi için ayrılmış gri bir yer tutucu bulunur. Sağ tarafta, yer tutucu yüklenen resimle değiştirilir.

Tanımlanmış kapsayıcı boyutları

Tarayıcı motorunun, DOM öğelerinin kullanılabilir hale geldikten sonra genişliğini ve yüksekliğini hesaplaması gerekmemesi için tüm resimler ve kapsayıcılar için açık boyutlar belirttik. Bu sayede gereksiz düzen değişiklikleri ve ek boyama çalışmaları önlendi.

CLS hedeflerini ve başarılarını özetleme

Optimizasyon projesine başlamadan önce ekip, 0,25 olan CLS puanlarını karşılaştırdı. Bu değeri %90 oranında azaltarak 0,09'a düşürdük.

Chrome Kullanıcı Deneyimi Raporu'nda gösterilen CLS dağılımları. CLS değerlerinin% 76'sı "İyi", %15'i "Orta" ve% 9'u "Kötü"dür. The Economic Times web sitesindeki kullanıcı deneyimlerinin 75.yüzdelik diliminde genel olarak 0,09 CLS değeri görüldü.

First Input Delay (FID) nedir ve bu metriği nasıl iyileştirdik?

First Input Delay, bir web sitesinin kullanıcı girişlerine yanıt verme durumunu izleyen metriktir. FID puanının düşük olmasının birincil nedeni, tarayıcı ana iş parçasını meşgul eden ve kullanıcı etkileşimlerini geciktirebilecek yoğun JavaScript çalışmasıdır. FID'yi çeşitli şekillerde iyileştirdik.

Uzun JavaScript görevlerini bölme

Uzun görevler, 50 milisaniye veya daha uzun süren görevlerdir. Uzun görevler, tarayıcının ana iş parçacığını işgal eder ve kullanıcı girişlerine yanıt vermesini engeller. Kullanıcı talebi üzerine, mümkün olduğunda uzun süren görevleri daha küçük görevlere ayırdık. Bu sayede JavaScript'in şişmesini azalttık.

Chrome'un DevTools'unun performans panelinde etkinlik türüne göre ayrılmış CPU süresi. Kaynakların yüklenmesi planlanırken 143 milisaniye harcandı. JavaScript için 4.553 milisaniye harcandı. Oluşturma işlemi için 961 milisaniye harcanmıştır. Boyama işlemleri için 191 milisaniye harcandı. Sistem görevleri için 1.488 milisaniye, boşta kalma süresi için 3.877 milisaniye. Toplam zaman aralığı 11.212 milisaniyeydi.

Kullanılmayan JavaScript'i erteleme

Sayfanın daha duyarlı kalması için sayfa içeriğine, analizler gibi üçüncü taraf komut dosyalarına göre öncelik verdik. Ancak kullanıcı yolculuğunun doğru şekilde izlenmesi için bazı kitaplıkların <head> belgesine yüklenmesi gerektiğinden bu kitaplıklarla ilgili belirli sınırlamalar vardır.

Polifill sayısını azaltma

Tarayıcılar modern API'ler için destek sağladığından ve Internet Explorer gibi eski tarayıcıları kullanan kullanıcı sayısı azaldığından belirli polyfill'lere ve kitaplıklara olan bağımlılığımızı azalttık.

Reklamları geç yükleme

Ekranın alt kısmındaki reklamları geç yüklemek, ana iş parçacığı engelleme süresini kısaltarak FID'yi iyileştirdi.

FID hedeflerini ve başarılarını özetleme

Rutin denemelerimiz sayesinde FID'mizi 200 ms'den bugün 50 ms'nin altına düşürebildik.

Chrome Kullanıcı Deneyimi Raporu&#39;nda gösterilen FID dağılımları. CLS değerlerinin% 86&#39;sı &quot;İyi&quot;, %10&#39;u &quot;Orta&quot; ve% 4&#39;ü &quot;Kötü&quot;dür. The Economic Times web sitesindeki kullanıcı deneyimlerinin 75. yüzdelik diliminde, genel olarak 44 milisaniyelik bir FID yaşandı.

Gerilemelerin önlenmesi

Economics Times, sayfa performansında gerileme yaşanmasını önlemek için üretimde otomatik performans kontrolleri uygulamayı planlıyor. Lab testlerini otomatikleştirmek için Lighthouse-CI'yi değerlendirmeyi planlıyorlar. Bu sayede üretim dallarında gerilemelerin önüne geçebilirler.