Mercado Libre, Web Verileri için nasıl optimize edildi? (TBT/FID)

Ürün ayrıntıları sayfalarının etkileşimini optimize ederek Lighthouse'ta maksimum potansiyel FID'de% 90 oranında düşüş ve Chrome Kullanıcı Deneyimi Raporu'nda FID'de% 9 oranında artış elde edildi.

Carlos Aranha
Carlos Aranha
Demián Renzulli
Demián Renzulli
Joan Baca
Joan Baca

Mercado Libre, Latin Amerika'nın en büyük e-ticaret ve ödeme ekosistemidir. 18 ülkede faaliyet gösteren bu uygulama, Brezilya, Meksika ve Arjantin'de (benzersiz ziyaretçilere ve sayfa görüntülemelere göre) pazar lideridir.

Web performansı uzun süredir şirketin odak noktasıydı ancak yakın zamanda performansı izlemek ve sitenin farklı bölümlerinde optimizasyonlar uygulamak için bir ekip oluşturdular.

Bu makalede, Mercado Libre'nin ön uç mimari ekibinden Guille Paz, Pablo Carminatti ve Oleh Burkhay'ın, Önemli Web Verileri'nden biri olan ilk giriş gecikmesi (İGG) ve laboratuvar proxy'si toplam engelleme süresi (TBT) için yaptıkları çalışmalar özetlenmiştir.

%90

Lighthouse'ta Maksimum Olası İlk Giriş Gecikmesi'nde azalma

%9

CrUX'ta FID'yi "Hızlı" olarak algılayan daha fazla kullanıcı

Uzun görevler, ilk giriş gecikmesi ve toplam engelleme süresi

Pahalı JavaScript kodlarının çalıştırılması, tarayıcının ana iş parçacığında 50 ms'den uzun süre çalışan uzun görevlere neden olabilir.

FID (ilk giriş gecikmesi), kullanıcının bir sayfayla ilk kez etkileşime geçtiği andan (ör. bir bağlantıyı tıkladığında) tarayıcının bu etkileşime yanıt olarak etkinlik işleyicileri işlemeye gerçekten başlayabildiği ana kadar geçen süreyi ölçer. Pahalı JavaScript kodu yürüten bir sitede muhtemelen birkaç uzun görev bulunur. Bu görevler, FID'yi olumsuz yönde etkiler.

İyi bir kullanıcı deneyimi sağlamak için sitelerde First Input Delay'in 100 milisaniyeden daha kısa olması gerekir: İyi fid değerleri 2,5 saniyedir, kötü değerler 4,0 saniyeden uzundur ve bu iki değer arasındaki değerlerde iyileştirme yapılması gerekir.

Mercado Libre'nin sitesi çoğu bölümde iyi performans gösteriyordu ancak Chrome Kullanıcı Deneyimi Raporu'nda ürün ayrıntıları sayfalarının FID'sinin düşük olduğu tespit edildi. Bu bilgilere dayanarak, çalışmalarını sitedeki ürün sayfalarının etkileşimini iyileştirmeye odaklamaya karar verdiler.

Mercado Libre ürün ayrıntıları sayfasının mobil ve masaüstü sürümleri.
Mercado Libre ürün ayrıntıları sayfasının mobil ve masaüstü sürümleri.

Bu sayfalar kullanıcının karmaşık etkileşimler gerçekleştirmesine olanak tanır. Bu nedenle, değerli işlevlere müdahale etmeden etkileşim optimizasyonu hedeflenmiştir.

Ürün ayrıntıları sayfalarının etkileşimini ölçme

FID için gerçek bir kullanıcı gerekir ve bu nedenle laboratuvarda ölçülemez. Bununla birlikte, Total Blocking Time (TBT) metriği laboratuvarda ölçülebilir, sahadaki FID ile iyi ilişkilidir ve etkileşimi etkileyen sorunları da yakalar.

Örneğin, aşağıdaki izlemede ana iş parçacığında görev çalıştırırken harcanan toplam süre 560 ms olsa da bu sürenin yalnızca 345 ms'si toplam engelleme süresi (her görevin 50 ms'yi aşan bölümlerinin toplamı) olarak kabul edilir:

Ana iş parçacığında, engelleme süresini gösteren görev zaman çizelgesi

Mercado Libre, gerçek dünyadaki ürün ayrıntıları sayfalarının etkileşimini ölçmek ve iyileştirmek için laboratuvarda TBT'yi proxy metrik olarak kullandı.

Genel yaklaşımları şu şekildeydi:

Uzun görevleri görselleştirmek için WebPageTest'i kullanma

WebPageTest (WPT), dünyanın farklı yerlerindeki gerçek cihazlarda testler yapmanıza olanak tanıyan bir web performansı aracıdır.

Mercado Libre, gerçek kullanıcılara benzer bir cihaz türü ve konum seçerek kullanıcılarının deneyimini yeniden oluşturmak için WPT'yi kullandı. Özellikle, Meksika'daki Mercado Libre kullanıcılarının deneyimine benzer bir deneyim sunmak istedikleri için Moto 4G cihaz ve Dulles, Virginia'yı seçtiler. Mercado Libre, WPT'nin ana iş parçacığı görünümünü gözlemleyerek ana iş parçacığının 2 saniye boyunca engellenmesine neden olan birkaç art arda gelen uzun görev olduğunu tespit etti:

Mercado Libre'nin ürün ayrıntıları sayfalarının ana mesaj görünümü.
Mercado Libre'nin ürün ayrıntıları sayfalarının ana mesaj görünümü.

İlgili şelaleyi analiz ettiklerinde, bu iki saniyenin önemli bir kısmının analiz modülünden geldiğini tespit ettiler. Uygulamanın ana paketi büyüktü (950 KB) ve ayrıştırılması, derlenmesi ve yürütülmesi uzun sürdü.

Ürün ayrıntıları sayfalarının şelale görünümü.
Mercado Libre'nin ürün ayrıntıları sayfalarının şelale görünümü.

Maksimum Olası İlk Giriş Gecikmesi'ni belirlemek için Lighthouse'u kullanma

Lighthouse, farklı cihazlar ve konumlar arasında seçim yapmanıza izin vermez ancak siteleri teşhis etmek ve performans önerileri almak için çok faydalı bir araçtır.

Mercado Libre, Lighthouse'u ürün ayrıntıları sayfalarında çalıştırdığında Maksimum Potansiyel FID'nin 1710 ms değerinde kırmızıyla işaretlenen tek metrik olduğunu tespit etti.

Mercado Libre'nin ürün ayrıntıları sayfaları için PSI raporundaki Lighthouse metrikleri.

Bu bilgiler doğrultusunda Mercado Libre, Lighthouse ve WebPageTest gibi bir laboratuvar aracında maksimum potansiyel FID puanını iyileştirmeyi hedefledi. Bu iyileştirmelerin gerçek kullanıcılarını etkileyeceği ve dolayısıyla Chrome Kullanıcı Deneyimi Raporu gibi gerçek kullanıcı izleme araçlarında gösterileceği varsayıldı.

Uzun görevleri optimize etme

İlk iterasyon

Mercado Libre, ana iş parçacığı izlemesine dayanarak pahalı kod çalıştıran iki modülü optimize etme hedefini belirledi.

Dahili izleme modülünün performansını optimize etmeye başladılar. Bu modül, modülün çalışması için kritik olmayan ve bu nedenle güvenli bir şekilde kaldırılabilen, CPU'ya yoğun bir görev içeriyordu. Bu sayede sitenin tamamında JavaScript'te% 2 oranında düşüş elde edildi.

Ardından genel paket boyutunu iyileştirme üzerinde çalışmaya başladılar:

Mercado Libre, optimizasyon fırsatlarını tespit etmek için webpack-bundle-analyzer'ı kullandı:

Ayrıca aşağıdaki Babel optimizasyonlarını da uyguladılar:

Bu optimizasyonlar sonucunda paket boyutu yaklaşık%16 oranında küçültüldü.

Etkiyi ölçme

Yapılan değişikliklerle Mercado Libre'nin art arda gelen uzun görevleri iki saniyeden bir saniyeye düşürüldü:

İlk optimizasyon turundan sonra Mercado Libre'nin ürün ayrıntıları sayfalarının ana mesaj görünümü.
WPT'nin üst şelalesinde 3. saniye ile 5. saniye arasında Sayfa Etkileşimli satırında uzun bir kırmızı çubuk var. Alt şelalede, çubuk daha küçük parçalara ayrılarak ana iş parçacığı daha kısa süre boyunca işgal edilmiştir.

Lighthouse, Maksimum Olası İlk Giriş Gecikmesi'nde % 57 oranında düşüş olduğunu gösterdi:

İlk optimizasyon turundan sonra Mercado Libre'nin ürün ayrıntıları sayfaları için PSI raporundaki Lighthouse metrikleri.

İkinci iterasyon

Ekip, daha sonra yapılacak iyileştirmeleri bulmak için uzun görevleri incelemeye devam etti.

İlk optimizasyon turundan sonra Mercado Libre'nin ürün ayrıntıları sayfalarının ana mesaj görünümünün ayrıntılı görünümü.
Şelale (resimde gösterilmemiştir), Mercado Libre'nin ana iş parçacığını yoğun şekilde kullanan kitaplıkları (Tarayıcı Ana İş Parçacığı satırı) belirlemesine yardımcı oldu ve Sayfa Etkileşimli satırı, bu ana iş parçacığı etkinliğinin etkileşimi engellediğini açıkça gösteriyor.

Bu bilgilere dayanarak aşağıdaki değişiklikleri uygulamaya karar verdiler:

  • Derleme ve ayrıştırma süresini optimize etmek için ana paket boyutunu küçültmeye devam edin (ör. farklı modüller arasındaki yinelenen bağımlılıkları kaldırarak).
  • JavaScript'i daha küçük parçalara bölmek ve farklı bileşenlerin daha akıllıca yüklenmesini sağlamak için bileşen düzeyinde kod bölme özelliğini uygulayın.
  • Ana ileti dizisinin daha akıllıca kullanılmasına olanak tanımak için bileşenlerin hizalanmasını erteleyin. Bu teknik genellikle kısmi hidrasyon olarak adlandırılır.

Etkiyi ölçme

Elde edilen WebPageTest izlemesi, daha da küçük JS yürütme parçaları gösterdi:

İkinci optimizasyon turundan sonra Mercado Libre'nin ürün ayrıntıları sayfalarının ana mesaj görünümü.

Ayrıca Lighthouse'taki Maksimum Olası İlk Giriş Gecikmesi süresi %60 daha azaltıldı:

İlk optimizasyon turundan sonra Mercado Libre'nin ürün ayrıntıları sayfaları için PSI raporundaki Lighthouse metrikleri.

Gerçek kullanıcıların ilerleme durumunu görselleştirme

WebPageTest ve Lighthouse gibi laboratuvar test araçları, geliştirme sırasında çözümler üzerinde iterasyon yapmak için mükemmel olsa da asıl amaç gerçek kullanıcıların deneyimini iyileştirmektir.

Chrome Kullanıcı Deneyimi Raporu, gerçek dünyadaki Chrome kullanıcılarının popüler web hedeflerinde yaşadığı kullanıcı deneyimleri hakkında metrikler sağlar. Rapordaki veriler, BigQuery, PageSpeedInsights veya CrUX API'de sorgu çalıştırılarak elde edilebilir.

CrUX kontrol paneli, temel metriklerin ilerleme durumunu görselleştirmenin kolay bir yoludur:

.
Mercado Libre'nin Ocak 2020 ile Nisan 2020 arasındaki FID ilerleme durumu. Optimizasyon projesinden önce kullanıcıların% 82'si FID'yi hızlı (100 ms'nin altında) olarak algılıyordu. Bu değişiklikten sonra kullanıcıların% 91'inden fazlası metriği hızlı olarak algıladı.

Sonraki adımlar

Web performansı hiçbir zaman tamamlanmış bir iş değildir. Mercado Libre, bu optimizasyonların kullanıcılarına sağladığı değeri anlıyor. Ürün listeleme sayfalarında prefetching, resim optimizasyonları ve diğerleri dahil olmak üzere site genelinde çeşitli optimizasyonlar uygulamaya devam ederken toplam engelleme süresini (TBT) ve dolaylı olarak FID'yi daha da azaltmak için ürün listeleme sayfalarına iyileştirmeler eklemeye devam ediyorlar. Bu optimizasyonlar şunları içerir:

  • Kod bölme çözümü üzerinde iterasyon yapın.
  • Üçüncü taraf komut dosyalarının yürütülmesini iyileştirme
  • Paketleyici düzeyinde (webpack) öğe paketlemede iyileştirmelere devam ediyoruz.

Mercado Libre, performansa bütünsel bir bakış açısıyla yaklaştığından sitedeki etkileşimi optimize etmeye devam ederken diğer iki mevcut Core Web Vitals metriği olan LCP (Largest Contentful Paint) ve CLS (Cumulative Layout Shift) metriklerini daha da iyileştirme fırsatlarını değerlendirmeye başladı.