Lighthouse'u kullanarak Web Verileri'ni optimize etme

Chrome'un web araçlarıyla kullanıcı deneyimini iyileştirecek fırsatlar bulma.

Addy Osmani
Addy Osmani

Yayınlanma tarihi: 11 Mayıs 2021

Bugün, sitenizin Web Verileri'nde nasıl iyileştirilebileceğini belirlemenize yardımcı olmak için Lighthouse, PageSpeed ve DevTools'taki yeni araç özelliklerinden bahsedeceğiz.

Lighthouse, web sayfalarının kalitesini artırmak için kullanılan açık kaynaklı, otomatik bir araçtır. Bu aracı Chrome Geliştirici Araçları hata ayıklama araçları paketinde bulabilir ve herkese açık olan veya kimlik doğrulama gerektiren tüm web sayfalarında çalıştırabilirsiniz. Lighthouse'u PageSpeed Insights, CI ve WebPageTest'te de bulabilirsiniz.

Lighthouse 7.x, kullanıcı deneyimi metriklerini etkileyen kullanıcı arayüzünüzün (ör. düzen değişikliğine hangi düğümlerin katkıda bulunduğu) bölümlerinin daha kolay görsel olarak incelenmesi için öğe ekran görüntüleri gibi yeni özellikler içerir.

Ayrıca, PageSpeed Insights'ta öğe ekran görüntüleri için destek sunarak sayfaların tek seferlik performans çalıştırmalarında sorunları daha kolay tespit etmenizi sağladık.

Sayfadaki düzen değişikliğine katkıda bulunan DOM düğümünü vurgulayan öğe ekran görüntüleri

Core Web Vitals'ı ölçme

Lighthouse; Largest Contentful Paint, Cumulative Layout Shift ve Total Engelleme Süresi (First Giriş Gecikmesi için bir laboratuvar proxy'si) dahil olmak üzere Core Web Vitals metriklerini sentetik olarak ölçebilir. Bu metrikler yükleme, düzen kararlılığı ve etkileşime hazır olma durumunu yansıtır. Core Web Vitals'ın geleceği bölümünde vurgulanan İlk Zengin İçerikli Boyama gibi diğer metrikler de burada yer alır.

Lighthouse raporunun "Metrikler" bölümünde bu metriklerin laboratuvar sürümleri yer alır. Bu raporu, kullanıcı deneyiminin hangi yönlerine dikkat etmeniz gerektiğinin özet görünümü olarak kullanabilirsiniz.

Lighthouse performans metrikleri
Geliştirici Araçları performans panelindeki Web Vitals şeridi
Geliştirici Araçları Performans panelindeki yeni Web Verileri seçeneği, yukarıda gösterilen Layout Shift (LS) gibi metrik anlarını vurgulayan bir kanal görüntüler.

Chrome UX Report veya RUM'da bulunanlar gibi alan metrikleri bu sınırlamaya sahip değildir ve gerçek kullanıcıların deneyimini yansıttığı için laboratuvar verilerini değerli bir şekilde tamamlar. Saha verileri, laboratuvarda elde ettiğiniz teşhis bilgilerini sunamaz. Bu nedenle, bu iki veri türü birlikte kullanılır.

Web Vitals'ta hangi alanları iyileştirebileceğinizi belirleme

Largest Contentful Paint öğesini tanımlama

LCP, algılanan yükleme deneyiminin bir ölçümüdür. Bu, sayfa yükleme sırasında birincil (veya "en büyük" içerik yüklendiğinde ve kullanıcı tarafından görülebildiği) noktayı işaretler.

Lighthouse'ta, en büyük zengin içerikli boyamanın hangi öğe olduğunu tanımlayan bir "Largest Contentful Paint öğesi" denetimi bulunur. Ana tarayıcı penceresinde öğenin üzerine geldiğinizde öğe vurgulanır.

Largest Contentful Paint öğesi

Bu öğe bir resimse bu bilgiler, bu resmin yüklenmesini optimize etmek isteyebileceğiniz yararlı bir ipucudur. Lighthouse, resimlerinizin daha iyi sıkıştırılıp sıkıştırılamayacağı, yeniden boyutlandırılıp boyutlandırılamayacağı veya daha modern ve optimize bir resim biçiminde yayınlanıp yayınlanamayacağı hakkında bilgi edinmenize yardımcı olmak için çeşitli resim optimizasyonu denetimleri içerir.

Resimleri uygun şekilde boyutlandırma denetimi

AnnieSullivan'ın LCP Yer İşareti uygulamasını, tek tıklamayla kırmızı bir dikdörtgene sahip LCP öğesini hızlı bir şekilde tanımlamak için de faydalı bulabilirsiniz.

Yer işareti ile LCP öğesini vurgulama

LCP'yi iyileştirmek için geç keşfedilen resimleri önceden yükleyin

Largest Contentful Paint'i iyileştirmek için kritik kahraman resimlerinizi tarayıcı tarafından geç keşfedilirlerse önceden yükleyin. Resmin bulunabilir olması için bir JavaScript paketinin yüklenmesi gerekiyorsa geç keşif gerçekleşebilir.

Largest Contentful Paint resmini önceden yükleme

LCP resimlerini önceden yüklemeyle ilgili sık sorulan birkaç soru vardır. Bu soruları kısaca ele almanın da faydalı olabileceğini düşünüyoruz.

Duyarlı resimleri önceden yükleyebilir misiniz? Evet'e dokunun. Aşağıda srcset ve sizes kullanılarak belirtildiği gibi duyarlı bir hero resmimiz olduğunu varsayalım:

<img src="lighthouse.jpg"
          srcset="lighthouse_400px.jpg 400w,
                  lighthouse_800px.jpg 800w,
                  lighthouse_1600px.jpg 1600w" sizes="50vw" alt="A helpful
Lighthouse">

link özelliğine eklenen imagesrcset ve imagesizes özellikleri sayesinde, srcset ve sizes tarafından kullanılan resim seçme mantığını kullanarak duyarlı bir resmi önceden yükleyebiliriz:

<link rel="preload" as="image" href="lighthouse.jpg"
           imagesrcset="lighthouse_400px.jpg 400w,
                        lighthouse_800px.jpg 800w,
                        lighthouse_1600px.jpg 1600w"
imagesizes="50vw">

LCP resmi CSS arka planı aracılığıyla tanımlanırsa denetim, ön yükleme fırsatlarını da vurgular mı? Evet.

CSS arka planı veya <img> aracılığıyla LCP resmi olarak işaretlenen herhangi bir resim, üç veya daha yüksek şelale derinliğinde keşfedildiğinde aday olur.

Ekran dışındaki görselleri geç yükleme ve LCP için bunu yapmama

İlk kullanıcı deneyimi için kritik olmayan ekran dışındaki resimler gecikmeli yüklenebilir. Bu, kullanıcı aşağı doğru kaydırana kadar resmin indirilmesini erteleyen bir tekniktir. Bu teknik, kritik öğeler için ağ anlaşmazlığını azaltabilir ve bazı durumlarda LCP'yi iyileştirebilir. "Ekran dışındaki resimleri geciktir" denetimi bu konuda yardımcı olabilir:

Ekran dışındaki görselleri erteleme

Ekranın üst kısmındaki kritik resimler (ör. Largest Contentful Paint resmi) geç yüklenmemelidir. Bunu yapmak LCP görüntüsünün yüklenmesini geciktirebilir. "Largest Contentful Paint resmi geç yüklendi" denetimi aracılığıyla bir LCP resmi yanlış şekilde geç yükleniyorsa Lighthouse bunu belirtir:

LCP resimlerini geç yüklemekten kaçının

CLS katkılarını belirleyin

Cumulative Layout Shift bir görsel kararlılık ölçümüdür. Bir sayfanın içeriğinin görsel olarak ne kadar kaydığını ölçer. Lighthouse'ta, CLS ile ilgili hata ayıklama için "Büyük düzen kaymalarından kaçının" adlı bir denetim bulunur.

Bu denetim, sayfadaki kaymalara en çok katkıda bulunan DOM öğelerini vurgular. Soldaki Öğe sütununda bu DOM öğelerinin listesini, sağda ise toplam CLS katkılarını görürsünüz.

Lighthouse&#39;da CLS&#39;ye katkıda bulunan alakalı DOM düğümlerini vurgulayan büyük düzen kaymalarını önleme denetimi

Yeni Lighthouse Öğesi Ekran Görüntüleri özelliği sayesinde hem denetimde belirtilen temel öğelerin görsel bir önizlemesini hem de daha net bir görünüm için tıklayarak yakınlaştırmayı görebiliyoruz:

Bir öğenin ekran görüntüsünü tıkladığınızda öğe genişletilir

Yükleme sonrası CLS'de, CLS'ye en çok katkıda bulunan öğeler dikdörtgenlerle kalıcı şekilde görselleştirmede değer olabilir. Bu özellik, SpeedCurve'un Core Web Vitals kontrol paneli gibi üçüncü taraf araçlarında bulunur ve Defaced'ın Layout Shift GIF Generator aracını kullanarak aşağıdakiler için kullanabilirsiniz:

düzen kayması jeneratörü, kaymaları vurgular

Düzen kayması sorunlarını site genelinde genel hatlarıyla incelemek için Search Console'un Core Web Vitals raporundan önemli ölçüde bilgi aldım. Bu, sitemdeki yüksek CLS'ye sahip sayfa türlerini görmemi sağlıyor (bu örnekte, zamanımı hangi şablon kısımlarına harcamam gerektiğini kendim belirleyebiliyorum):

Search Console&#39;da CLS sorunları gösteriliyor

Boyutları olmayan resimlerden CLS'yi belirleme

Boyutları olmayan resimlerden kaynaklanan kümülatif düzen kaymasını sınırlamak için resimlerinize ve video öğelerinize genişlik ve yükseklik boyut özelliklerini ekleyin. Bu yaklaşım, tarayıcının resim yüklenirken dokümanda doğru miktarda alan ayırmasını sağlar.

Açıkça belirtilmiş genişlik ve yüksekliği olmayan resim öğeleri için denetim

Resim boyutları ve en boy oranı üzerine düşünmenin önemine ilişkin iyi bir yazı için Resimlerde Yüksekliği ve Genişliği Tekrar Ayarlamak Tekrar Önemli bölümüne bakın.

Reklamlardan CLS'yi tanımlama

Publisher Ads for Lighthouse, sayfanızdaki reklamların yüklenme deneyimini iyileştirmeye yönelik fırsatlar bulmanızı sağlar. Düzen kaymasına katkılar ve sayfanızın kullanıcılar tarafından ne kadar kısa süre içinde kullanılabilir olacağını ileri sürebilecek uzun görevler bu kapsamda yer alır. BunuLighthouse'ta Topluluk Eklentileri aracılığıyla etkinleştirebilirsiniz.

İstek ve düzen kaymasının süresini kısaltmak için sunulan fırsatları vurgulayan, Google Ads ile ilgili denetimler

Reklamların, web'deki düzen değişikliklerine en çok katkıda bulunan unsurlardan biri olduğunu unutmayın. Şunları yapmanız önemlidir:

  • Yapışkan olmayan reklamları görüntü alanının üst kısmına yakın bir yere yerleştirirken dikkatli olun.
  • Reklam alanı için mümkün olan en büyük boyutu ayırarak kaymaları ortadan kaldırın

Birleştirilmemiş animasyonlardan kaçının

Ağır JavaScript görevleri ana iş parçacığını meşgul tutuyorsa, birleşik olmayan animasyonlar, alt uç cihazlarda kendilerini kötü bir şekilde sunabilir. Bu tür animasyonlar, düzen kaymalarına neden olabilir.

Chrome bir animasyonun birleştirilemediğini tespit ederse bunu bir Geliştirici Araçları izleme Lighthouse okumalarına bildirir. Böylece, animasyon içeren hangi öğelerin neden birleştirilmediğini listeleyebilir. Bu sorunları Bileşik olmayan animasyonları önleyin denetiminde bulabilirsiniz.

Birleştirilmemiş animasyonlardan kaçınmak için denetim

İlk Giriş Gecikmesi / Toplam Engelleme Süresi / Uzun Görevler için Hata Ayıklama

İlk Giriş, kullanıcının bir sayfayla ilk kez etkileşimde bulunmasından (ör. bir bağlantıyı tıklaması, bir düğmeye dokunması veya JavaScript destekli özel bir kontrolü kullanması) ile tarayıcının bu etkileşime yanıt olarak etkinlik işleyicileri işlemeye başlamasına kadar geçen süreyi ölçer. Uzun JavaScript Görevleri bu metriği ve bu metriğin proxy'sini (Toplam Engelleme Süresi) etkileyebilir.

Uzun ana iş parçacığı görevlerinden kaçınmak için denetim

Lighthouse, ana ileti dizisindeki en uzun görevleri listeleyen bir Uzun ana ileti dizisi görevlerinden kaçının denetimi içerir. Bu, giriş gecikmesine en çok katkıda bulunanları belirlemenize yardımcı olabilir. Sol sütunda, uzun ana iş parçacığı görevlerinden sorumlu komut dosyalarının URL'lerini görebiliriz.

Sağ tarafta bu görevlerin süresini görebiliriz. Uzun görevler, 50 milisaniyeden uzun süren görevlerdir. Bunun, ana iş parçacığını kare hızını veya giriş gecikmesini etkileyecek kadar uzun süre engellediği kabul edilir.

İzleme için üçüncü taraf hizmetlerini kullanmayı düşünüyorsanız Calibre'ın bu maliyetleri görselleştirmek için sahip olduğu ana iş parçacığı yürütme zaman çizelgesi görselini de çok seviyorum. Bu görsel, etkileşimi etkileyen uzun görevlere katkıda bulunan üst ve alt görevleri vurguluyor.

Ana iş parçacığı yürütme zaman çizelgesi görseli Calibre

Lighthouse'ta önceki/sonraki etkiyi görmek için ağ isteklerini engelleyin

Chrome Geliştirici Araçları, kaynakların kaldırılmasını veya kullanılamamasının etkilerini ayrı ayrı görmek için ağ isteklerini engelleme özelliğini destekler. Bu, tek tek komut dosyalarının (ör.üçüncü taraf yerleştirmeleri veya izleyiciler) Toplam Engelleme Süresi (TBT) ve Etkileşim Süresi gibi metrikler üzerindeki maliyetini anlamaya yardımcı olabilir.

Ağ isteği engelleme, Lighthouse ile de çalışır. Bir sitenin Lighthouse raporuna hızlı bir şekilde bakalım. 400 ms TBT ile performans puanı 63/100'dür. Kodu incelediğimizde, bu sitenin Chrome'da gerekli olmayan bir Intersection Observer polyfill yüklediğini görüyoruz. Haydi engelleyelim!

Ağ isteği engelleme

Geliştirici Araçları Ağ panelinde bir komut dosyasını sağ tıklayıp Block Request URL simgesini tıklayarak engelleyebiliriz. Burada bunu Intersection Observer polyfill için yapacağız.

Geliştirici Araçları&#39;nda istek URL&#39;lerini engelle

Ardından Lighthouse'u yeniden çalıştırabiliriz. Bu sefer, toplam engelleme süresi (400 ms => 300 ms) nedeniyle performans puanımızın iyileştiğini (70/100) görüyoruz.

Maliyetli ağ isteklerini engellemenin ardından görüntülenen görünüm

Pahalı üçüncü taraf yerleşimlerini hafif bileşenle değiştirme

Sayfalara video, sosyal medya yayını veya widget yerleştirmek için üçüncü taraf kaynakların kullanılması yaygın bir uygulamadır. Varsayılan olarak çoğu yerleşik içerik hemen yüklenir ve kullanıcı deneyimini olumsuz yönde etkileyen maliyetli yüklerle birlikte gelebilir. Üçüncü taraf kritik değilse (ör. kullanıcının bunu görmeden önce kaydırması gerekiyorsa) bu durum israftır.

Bu tür widget'ların performansını iyileştirmenin bir yolu, kullanıcı etkileşimi olduğunda bunları yavaş yüklemektir. Bu işlem, widget'ın hafif bir önizlemesi (bir cephe) oluşturularak ve tam sürüm yalnızca kullanıcı onunla etkileşime geçerse yükleyerek yapılabilir. Lighthouse, YouTube video yerleştirmeleri gibi bir hafif bileşen ile geç yüklenebilecek üçüncü taraf kaynakları öneren bir denetime sahiptir.

Yüksek maliyetli bazı üçüncü taraf kaynaklarının değiştirilebileceğinin vurgulandığı denetim

Lighthouse'ın, ana iş parçacığını 250 ms'den uzun süre boyunca engelleyen üçüncü taraf kodunu vurguladığını hatırlatmak isteriz. Bu, Google tarafından yazılanlar da dahil olmak üzere her türlü üçüncü taraf komut dosyasını açığa çıkarabilir. Bu komut dosyaları, oluşturdukları komut dosyalarını görüntülemek için kaydırma gerektiriyorsa daha iyi erteleme veya geç yükleme işlemlerini gerçekleştirebilir.

Üçüncü taraf JavaScript denetiminin maliyetini azaltma

Core Web Vitals'in ötesinde

Lighthouse ve PageSpeed Insights'ın son sürümleri, Core Web Vitals'ı vurgulamanın yanı sıra, kaynak haritaları etkinleştirildiğinde JavaScript ağırlıklı web uygulamalarının ne kadar hızlı yüklenebileceğini iyileştirmek için uygulayabileceğiniz somut kılavuzlar sunmaya da olanak tanır.

Bu denetimler, sayfanızdaki JavaScript maliyetini azaltmaya yönelik olarak gittikçe büyüyen bir denetim koleksiyonunu da içeriyor.

Core Web Vitals araçları hakkında daha fazla bilgi için Lighthouse ekibi Twitter hesabına ve Geliştirici Araçları'ndaki yeniliklere göz atın.

Mercedes Mehling'in Unsplash'teki hero resim.