Daha iyi bir web oluşturma: Daha hızlı bir YouTube

YouTube web ekibinin performansı iyileştirmek, Core Web Vitals geçiş oranlarını artırmak ve temel işletme metriklerini yükseltmek için yaptığı değişiklikleri içeren bir örnek olay.

Addy Osmani
Addy Osmani
Sriram Krishnan
Sriram Krishnan

Chrome ekibi sık sık "Daha iyi bir web oluşturma"dan bahseder. Peki bu ne anlama geliyor? Web deneyimleri hızlı, erişilebilir olmalı ve kullanıcıların en çok ihtiyaç duyduğu anda cihaz özelliklerini kullanmalıdır. Kendi ürününüzü kullanma, Google'ın kültürünün bir parçasıdır. Bu nedenle Chrome ekibi, "Daha iyi bir web oluşturma" adlı yeni bir seride edindiği bilgileri paylaşmak için YouTube ile iş ortaklığı yaptı. Serinin ilk bölümünde, YouTube'un daha hızlı bir web deneyimi sunmak için neler yaptığı ele alınacak.

Chrome kullanıcı deneyimi raporu verilerini gösteren PageSpeed Insights.
Core Web Vitals eşiklerini geçen mobil web için YouTube izleme sayfası.

YouTube'da performans, videoların ve diğer içeriklerin (öneriler ve yorumlar gibi) web sayfalarında ne kadar hızlı yüklendiğiyle ilgilidir. Performans, YouTube'un arama, oynatıcı kontrolü, beğeni ve paylaşım gibi kullanıcı etkileşimlerine ne kadar hızlı yanıt verdiğiyle de ölçülür.

Brezilya, Hindistan ve Endonezya gibi gelişmekte olan pazarlar, YouTube mobil web için önemlidir. Bu bölgelerdeki birçok kullanıcının daha yavaş cihazları ve sınırlı ağ bant genişliği olduğundan hızlı ve sorunsuz bir deneyim sunmak kritik bir hedeftir.

YouTube, tüm kullanıcılara kapsayıcı bir deneyim sunmak için Core Web Vitals gibi performans metriklerini, gecikmeli yükleme ve kod modernleştirmesi yoluyla iyileştirmeye karar verdi.

Core Web Vitals'ı iyileştirme

YouTube ekibi, iyileştirme alanlarını belirlemek için Chrome Kullanıcı Deneyimi Raporu'nu (CrUX) kullandı. Böylece, gerçek kullanıcıların sahada mobil cihazlarda video izleme ve arama sonucu sayfalarını nasıl deneyimlediğini görebilirdi. Largest Contentful Paint (LCP) metriğinin bazı durumlarda 4-6 saniyede ilerlemesi nedeniyle Core Web Vitals metriklerinin iyileştirilmesi gereken çok fazla şey olduğunu fark ettiler. Bu süre, 2,5 saniye olan hedeflerinden önemli ölçüde daha yüksekti.

YouTube izleme sayfası geçiş oranlarını ve YouTube kaynağını gösteren FCP ve LCP grafikleri.

İyileştirme alanları belirlemek için YouTube izleme sayfalarını denetlemek üzere Lighthouse'u kullanan ekip, 3,5 saniyelik İlk Zengin İçerikli Boyama (FCP) ve 8,5 saniyelik LCP ile düşük bir Lighthouse (laboratuvar) puanı elde etti.

YouTube mobil cihazlar için Lighthouse raporu.
Chrome, altın standart olarak FCP için 1,8 saniye ve LCP için 2,5 saniyelik bir hedef belirler. FCP ve LCP sırasıyla 3,5 saniye ve 8,5 saniyede açıkça sarı ve kırmızı renkteydi.

YouTube ekibi, FCP ve LCP'yi optimize etmek için çeşitli denemeler yaptı ve iki önemli keşif elde etti.

  1. İlk keşif, video oynatıcının HTML'sini, video oynatıcıyı etkileşimli hale getiren komut dosyasının üzerine taşıyarak performansı artırabilecekleri oldu. Laboratuvar testleri, bu sürenin hem FCP hem de LCP süresini 4,4 saniyeden 1,1 saniyeye çıkarabileceğini göstermiştir.

  2. İkinci keşif, LCP'nin video akışındaki kareleri değil, yalnızca <video> öğe poster resimlerini göz önünde bulundurduğu oldu. YouTube, geleneksel olarak videonun oynatılmaya başlaması için en hızlı süreyi optimize eder. Bu nedenle ekip, LCP'yi iyileştirmek için poster resmini ne kadar hızlı yayınlayabileceklerini de optimize etmeye başladı. Poster resimleriyle birkaç varyasyon denediler ve kullanıcı testinde en iyi puanı alan görseli seçtiler. Bu çalışmanın sonucunda hem FCP hem de LCP belirgin bir iyileşme gösterdi. Alan LCP'si 4, 6 saniyeden 2, 0 saniyeye düştü.

Kontrol, deneme A (resim küçük resmi) ve deneme B (siyah küçük resim) gösteren mobil web için İzleme Sayfası LCP Denemesi
Bu değişiklikten sonra laboratuvarda FCP ve LCP'de 4,4 saniyeden 1,1 saniyeye kadar bir iyileşme gözlemledik. A denemesi: Videonun duraklatılmış olarak başladığı sayfalarda asıl video küçük resminin kullanılması iyi sonuç verirken izleme sayfası gibi otomatik oynatılan video sayfalarında kullanıcı çalışmalarında kötü performans gösterdi. Bu durum, etkin kullanıcı sayısında da düşüşe neden oldu. B denemesi: Kullanıcı çalışmalarında en iyi sonuçların, düz siyah bir poster resminin kullanılmasıyla elde edildiği görülmüştür. Kullanıcılar, videoların siyahtan ilk kareye geçişinin otomatik oynatma özelliğinde daha az rahatsız edici bir deneyim olduğunu belirtti.
Siyah küçük resim, Temmuz 2021&#39;de tüm mobil web kullanıcıları için üretime dağıtıldı ve yukarıdaki RUM analizinde görüldüğü gibi FCP ve LCP&#39;de belirgin bir iyileşme gösterdi.
Temmuz 2021'de, yukarıdaki RUM analizinde görüldüğü gibi FCP ve LCP'de belirgin bir iyileşme gösteren siyah küçük resim tüm mobil web kullanıcıları için üretime dağıtıldı.

Bu optimizasyonlar LCP'yi iyileştirse de ekip, sayfanın "ana içeriği" yüklendiğinde (LCP hedefi) kullanıcı açısından LCP metriğinin mevcut tanımının tam olarak yakalanmadığını fark etti.

YouTube ekibinin üyeleri, bu endişeleri gidermek amacıyla Chrome ekibinin üyeleriyle iş ortaklığı yaparak LCP metriğinin kendi kullanım alanlarına göre nasıl iyileştirilebileceğini araştırdı. Ekipler birkaç seçeneğin uygulanabilirliğini ve etkisini değerlendirdikten sonra, bir video öğesinin ilk karesinin boyama süresini LCP adayı olarak değerlendirmek için bir teklife karar verdi.

Bu değişiklik Chrome'a uygulandıktan sonra YouTube ekibi, LCP için optimizasyon çalışmalarına devam edecek. Ayrıca, metriğin güncellenmiş sürümü, bu optimizasyonların gerçek kullanıcı deneyimleri üzerinde daha doğrudan bir etkisi olacağı anlamına gelir.

Geç yüklemeyle modülerleştirme

YouTube sayfalarında, istenmeden yüklenen çok sayıda modül vardı. 50'den fazla bileşenin oluşturulma şeklini optimize etmek için ekip, istemciye hangi modüllerin yükleneceğini bildirecek bir bileşen JS modülü haritası oluşturdu. Bileşenleri geç olarak işaretlediğinizde JS modülleri daha sonra yüklenir, böylece sayfanın ilk yükleme süresi ve istemciye gönderilen kullanılmayan JavaScript miktarı azalır.

Ancak geç yükleme uygulandıktan sonra ekip, geç yüklenen bileşenlerin ve bunların bağımlılarının en uygun olmayan zamanlarda yükleneceği bir şelale etkisi fark etti.

Ekip, bu sorunu çözmek için bir görünüm için gereken minimum bileşen grubunu belirledi ve bunları tek bir ağ isteğinde grupladı. Sonuç olarak sayfa hızı iyileşti, JavaScript ayrıştırma süresi azaldı ve nihayetinde ilk oluşturma süreleri iyileşti.

Bileşenler genelinde durum yönetimi

YouTube, özellikle eski cihazlarda oynatıcı kontrolleri nedeniyle performans sorunları yaşıyordu. Kod analizi, kullanıcıların oynatma hızı ve ilerleme durumu gibi özellikleri kontrol etmesine olanak tanıyan oynatıcının zamanla fazla bileşene sahip olduğunu gösteriyordu.

YouTube oynatıcısı ve kontroller görselleştirilmiş
YouTube video oynatıcı, kullanıcıların oynatma hızını kontrol etme, ilerleme durumunu takip etme, bölümleri atlama gibi işlemler yapmalarına olanak tanır. Kullanıcı belirli bir kontrole dokunduğunda, durumdaki değişiklik diğer kontrollere iletilmelidir. Örneğin, kullanıcının ilerleme çubuğuna dokunduğunda bu durum oynatma çubuğu, altyazılar gibi diğer kontrollerle paylaşılmalıdır.

Her ilerleme çubuğu dokunma ve hareket etkinliği, iki ekstra stil yeniden hesaplaması tetikledi ve laboratuvardaki performans testi çalıştırmaları sırasında 21,17 ms sürdü. Zaman içinde yeni kontroller eklendikçe, merkezi olmayan denetim kalıbı genellikle döngüsel bağımlılıklara ve bellek sızıntılarına neden olarak izleme sayfası performansını olumsuz yönde etkiler.

Performans zaman çizelgesinde gösterilen 21,17 ms etkinliği.
4 kat CPU yavaşlatma performansı çalıştırması olan Chrome Geliştirici Araçları.

Ekip, merkezi olmayan kontrolden kaynaklanan sorunları düzeltmek için oynatıcı kullanıcı arayüzünü tüm güncellemeleri senkronize edecek şekilde güncelledi. Böylece oynatıcı, alt öğelerine veri aktaracak tek bir üst düzey bileşen olarak yeniden yapılandırıldı. Bu sayede, herhangi bir durum değişikliği için yalnızca bir kullanıcı arayüzü güncelleme (oluşturma) döngüsü sağlandı ve zincirlenmiş güncellemeler ortadan kaldırıldı. Yeni oynatıcı ilerleme çubuğu dokunma ve hareket etkinliği, JavaScript yürütülmesi sırasında stil yeniden hesaplaması yapmaz ve artık eski oynatıcının yalnızca% 25'i kadar zaman alır.

Performans zaman çizelgesinde gösterilen etkinliklerin süresi azaltıldı.

Bu kod modernizasyonu, eski cihazlarda izleme yükleme sürelerinin iyileştirilmesi, oynatmanın daha az terk edilmesi ve önemli olmayan hata sayısının azaltılması gibi ek performans iyileştirmelerine de yol açtı.

Sonuçlar ve optimizasyonlar

YouTube'un performansa yaptığı yatırım sayesinde izleme sayfaları çok daha hızlı yüklenmeye başladı. YouTube'un mobil web sitesi URL'lerinin% 76'sı artık alandaki Core Web Vitals metrik eşiklerini geçiyor. Masaüstünde izleme sayfası için laboratuvar LCP'si yaklaşık 4,6 saniyeden 1,6 saniyeye indirildi. Özellikle YouTube video oynatıcısında sitenin etkileşim ve oluşturma performansı, JavaScript yürütme işleminde öncekinden% 75'e varan oranda daha az zaman harcıyor.

YouTube web'in performansında son bir yılda yapılan iyileştirmeler, izlenme süresi ve günlük etkin kullanıcı sayısı gibi işletme metriklerini de olumlu yönde etkiledi. Bu çalışmaların başarısına bağlı olarak, gelecekte optimizasyon için daha da fazla yol keşfetmeyi planlıyoruz.

Bu çalışmaya katkıda bulunan Gilberto Cocchi, Lauren Usui, Benji Bear, Bo Aye, Bogdan Balas, Kenny Tran, Matthew Smith, Phil Harnish, Leena Sahoni, Jeremy Wagner, Philip Walton, Harleen Batra ve YouTube ile Chrome ekiplerine özel teşekkürler.