Lighthouse'u kullanarak Web Verileri'ni optimize etme

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

Addy Osmani
Addy Osmani

Bugün, sitenizin Web Verileri'nde nasıl iyileştirilebileceğini belirlemeye yardımcı olmak için Lighthouse, PageSpeed ve Geliştirici Araçları'ndaki yeni araç özelliklerini ele alacağız.

Araçları hatırlamak için, Lighthouse web sayfalarının kalitesini iyileştirmeye yönelik açık kaynaklı ve 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 herhangi bir web sayfasında çalıştırabilirsiniz. Lighthouse'u PageSpeed Insights, CI ve WebPageTest'te de bulabilirsiniz.

Lighthouse 7.x, kullanıcı deneyimi metriklerini etkileyen (ör. düzen kaymasına katkıda bulunan düğümler) kullanıcı arayüzünüzün bölümlerinin daha kolay görsel olarak incelenebilmesi 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 de sunduk. Bu sayede, sayfaların bir defalık performans çalışmasıyla ilgili sorunları daha kolay tespit edebilirsiniz.

Sayfadaki düzen kaymasına katkıda bulunan DOM düğümünü vurgulayan Öğe Ekran Görüntüleri

Önemli Web Verilerini Ölçme

Lighthouse, Largest Contentful Paint, CumulativeLayout Shift ve Toplam Engelleme Süresi (İlk Giriş Gecikmesi için laboratuvar proxy'si) dahil olmak üzere Önemli Web Verileri metriklerini sentetik olarak ölçebilir. Bu metrikler yükleme, düzen kararlılığı ve etkileşimin hazırlık durumunu yansıtır. Önemli Web Verileri'nin geleceğinde vurgulanan First Contentful Paint gibi diğer metrikler de burada yer alır.

Lighthouse raporunun "Metrikler" bölümü, bu metriklerin laboratuvar sürümlerini içerir. Bunu, kullanıcı deneyiminin hangi yönleriyle ilgilenmeniz gerektiğini gösteren özet bir görünüm olarak kullanabilirsiniz.

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

Chrome Kullanıcı Deneyimi Raporu'nda 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 verileri için değerli bir tamamlayıcıdır. Alan verileri, laboratuvarda elde edeceğiniz teşhis bilgileri sunamaz; bu nedenle bu ikisi birbiriyle bağlantılıdır.

Web Verileri'nde hangi noktaları iyileştirebileceğinizi belirleyin

Largest Contentful Paint öğesini tanımlama

LCP, algılanan yükleme deneyiminin bir ölçümüdür. Sayfa yükleme sırasında birincil veya "en büyük" içeriğin yüklendiği ve kullanıcıya görünür olduğu noktayı işaretler.

Lighthouse, hangi öğenin en büyük zengin içerikli boyama olduğunu tanımlayan bir "Largest Contentful Paint öğesi" denetimine sahiptir. Fareyle öğenin üzerine geldiğinizde öğe, ana tarayıcı penceresinde vurgulanır.

Largest Contentful Paint öğesi

Söz konusu öğe bir resimse bu bilgi, resmin yüklenmesini optimize etmek isteyebileceğiniz için yararlı bir ipucudur. Lighthouse, resimlerinizin daha iyi sıkıştırılıp yeniden boyutlandırılamayacağını, yeniden boyutlandırılabilir veya daha uygun bir modern resim biçiminde sunulup sunulamayacağını anlamanıza yardımcı olacak bir dizi resim optimizasyonu denetimi içerir.

Resimlerin boyutunu uygun şekilde ayarlama denetimi

Ayrıca, Annie Sullivan'ın LCP Yer İşareti uygulamasını, kırmızı bir dikdörtgene sahip LCP öğesini tek tıklamayla hızlıca tanımlamanızda da yararlı olabilir.

LCP öğesini yer işareti uygulamasıyla vurgulama

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

Largest Contentful Paint'i iyileştirmek için tarayıcı tarafından geç keşfedilen kritik kahraman görsellerinizi önceden yükleyin. Resmin bulunabilir hale gelmesi için bir JavaScript paketinin yüklenmesi gerekiyorsa geç keşfedilebilir.

En büyük zengin içerikli boyama resmini önceden yükleyin

LCP görüntülerinin önceden yüklenmesiyle ilgili olarak bize sorduğumuz sık sorulan birkaç soru bulunmaktadır. Bunlar da kısaca ele almaya değer olabilir.

Duyarlı resimleri önceden yükleyebilir misiniz? Evet'e dokunun. Aşağıda srcset ve sizes kullanılarak belirtildiği gibi duyarlı bir hero resminiz 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çimi mantığının aynısı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 resminin CSS arka planı aracılığıyla tanımlandığı durumlarda denetimde ön yükleme fırsatları da vurgulanır mı? Evet.

CSS arka planı veya <img> aracılığıyla LCP resmi olarak işaretlenen tüm resimler, üç veya daha fazla şelale derinliğinde keşfedilirse adaydır.

Ekran dışı resimleri geç yükleme ve LCP için bunu önleme

İlk kullanıcı deneyimi açısından kritik olmayan ekran dışı resimler geç yüklenebilir. Bu, bir kullanıcı resmi aşağı kaydırana dek bir 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 ertele" denetimi şu konularda yardımcı olabilir:

Ekran dışındaki resimleri ertele

Largest Contentful Paint resmi gibi önemli ekranın üst kısmındaki resimler geç yüklenmemelidir. Aksi halde, LCP resminin yüklenmesi gecikebilir. Lighthouse, "Largest Contentful Paint resmi geç yüklendi" denetimi aracılığıyla LCP görüntüsü yanlış yükleniyorsa bunu vurgular:

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

CLS katkılarını tanımlama

Cumulative Layout Shift bir görsel kararlılık ölçümüdür. Bir sayfa içeriğinin görsel olarak ne kadar yer değiştirdiğini ölçer. Lighthouse, CLS'de hata ayıklamayla ilgili "Büyük düzen kaymalarından kaçınma" adlı bir denetime sahiptir.

Bu denetim, sayfa geçişlerine en çok katkıda bulunan DOM öğelerini vurgular. Soldaki Öğe sütununda bu DOM öğelerinin listesini ve sağ tarafta ise genel CLS katkılarını görürsünüz.

Lighthouse&#39;da CLS&#39;ye katkıda bulunan ilgili DOM düğümlerini vurgulayan büyük düzen kayması denetiminden kaçınma

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

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

Yükleme sonrası CLS için CLS'ye en çok katkıda bulunan öğeleri dikdörtgenlerle kalıcı şekilde görselleştirmek faydalı olabilir. Bu, SpeedCurve'un Önemli Web Verileri kontrol paneli gibi üçüncü taraf araçlarda bulabileceğiniz ve aşağıdakiler için Defaced's Layout Shift GIF Oluşturucu'yu kullanmayı sevdiğim bir özelliktir:

vardiyaları vurgulayan düzen kayması oluşturucu

Düzen kayması sorunlarının site genelinde nasıl göründüğüne bakmak için Search Console'un Önemli Web Verileri raporundan oldukça fazla yol alıyorum. Bu, sitemde CLS değeri yüksek olan sayfa türlerini görmemi sağlıyor (bu örnekte, zamanımı harcamam gereken şablon bölümlerini tanımlamama yardımcı oluyor):

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

Boyutu olmayan resimlerden CLS'yi tanımlama

Boyutu olmayan resimlerin neden olduğu Cumulative Layout Shift'i sınırlamak için resimlerinize ve video öğelerinize genişlik ve yükseklik boyut özelliklerini ekleyin. Bu yaklaşım, resim yüklenirken tarayıcının belgede doğru miktarda alan ayırabilmesini sağlar.

Genişliği ve yüksekliği açıkça belirtilmemiş resim öğelerini denetle

Resim boyutlarını ve en boy oranını düşünmenin önemi hakkında iyi bir yazı için Resimlerde Yükseklik ve Genişliği Ayarlama Yine Önemli konusuna bakın.

Reklamlardan CLS'yi belirleme

Publisher Ads for Lighthouse, düzen kaymasına katkılar ve sayfanızın kullanıcılar tarafından ne kadar erken kullanılabilir olacağını tahmin edebilecek uzun görevler de dahil olmak üzere sayfanızdaki reklamların yükleme deneyimini iyileştirecek fırsatlar bulmanızı sağlar. Lighthouse'da bunu Topluluk Eklentileri aracılığıyla etkinleştirebilirsiniz.

İstek ve düzen kaymasını azaltma fırsatlarının vurgulandığı, reklamlarla ilgili denetimler

Reklamların web'de düzen değişikliklerine en çok katkıda bulunanlardan biri olduğunu unutmayın. Şunları unutmayın:

  • Görüntü alanının üst kısmına yapışkan olmayan reklamlar 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

Yoğun JavaScript görevleri ana iş parçacığını meşgul eden animasyonlar, alt uç cihazlarda kendilerini kötü gösterebilir. Bu tür animasyonlar, düzen kaymalarına yol açabilir.

Chrome, bir animasyonun birleştirilemediğini fark ederse bu durumu bir DevTools izine bildirirse Lighthouse "animasyonları" hangi öğelerin neden birleştirilmediğini listeleyerek listeleyebilir. Bunları, Birleştirilmemiş animasyonları engelleme denetiminde bulabilirsiniz.

Birleştirilmemiş animasyonlardan kaçınma denetimi

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

İlk Giriş, kullanıcının bir sayfayla ilk kez etkileşimde bulunduğu zamandan (ör. bir bağlantıyı tıkladığında, bir düğmeye dokunduğunda veya JavaScript destekli özel bir denetim kullandığında) tarayıcının bu etkileşime yanıt olarak etkinlik işleyicileri işlemeye başlayabileceği zamana 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çınma denetimi

Lighthouse, ana iş parçacığındaki en uzun görevleri listeleyen bir Uzun ana iş parçacığı görevlerinden kaçınma denetimi içerir. Bu veri, giriş gecikmesine en çok katkıda bulunanları belirlerken faydalı olabilir. Sol sütunda, uzun ana iş parçacığı görevlerinden sorumlu komut dosyalarının URL'sini görebiliriz.

Sağda bu görevlerin süresini görebiliyoruz. Hatırlatalım, Uzun Görevler 50 milisaniyeden daha 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 sunduğu ana iş parçacığı yürütme zaman çizelgesi görselini de çok beğeniyorum. Bu görsel, etkileşimi etkileyen uzun görevlere katkıda bulunan üst ve alt görevleri vurgular.

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

Lighthouse'da önce/sonra etkisini görmek için ağ isteklerini engelleyin

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

Ağ isteğini engelleme işlemi de Lighthouse ile çalışır. Bir sitenin Lighthouse raporuna hızlıca bakalım. Performans puanı 63/100'dür ve TBT değeri 400 ms'dir. Kodu incelediğimizde, bu sitenin Chrome'da gerekli olmayan bir Intersection Observer polyfill yüklediğini tespit ettik. Haydi engelleyelim!

Ağ isteğini engelleme

DevTools Network panelindeki bir komut dosyasını sağ tıklayıp Block Request URL işaretini tıklayarak engelleyebiliriz. Burada, Intersection Observer polyfill için bunu yapacağız.

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

Sonra Lighthouse'u yeniden çalıştırabiliriz. Bu kez, Toplam Engelleme Süresi'ne (400 ms => 300 ms) sahip olduğundan, performans puanımızın arttığını (70/100) görebiliriz.

Maliyetli ağ isteklerini engelleme işleminin sonraki görünümü

Pahalı üçüncü taraf yerleştirmelerini hafif bileşenle değiştirin

Sayfalara video, sosyal medya yayını veya widget'lar yerleştirmek için üçüncü taraf kaynakları yaygın olarak kullanılır. Varsayılan olarak çoğu yerleştirme, anında yüklenir ve kullanıcı deneyimini olumsuz etkileyen yüksek maliyetli yükleri de beraberinde getirir. Üçüncü taraf kritik öneme sahip değilse (ör. kullanıcının görmeden önce sayfayı kaydırması gerekiyorsa) bu veri israf yaratır.

Bu tür widget'ların performansını artırmanın bir yolu da kullanıcı etkileşiminde bunları geç yüklemektir. Bu, widget'ın hafif bir önizlemesini (bir cephe) oluşturularak yapılabilir ve tam sürümü, yalnızca kullanıcı etkileşimde bulunduğunda yüklenir. Lighthouse'da, YouTube videosu yerleştirmeleri gibi bir ön cepheyle geç yüklenebilen üçüncü taraf kaynakları öneren bir denetim bulunur.

Bazı maliyetli üçüncü taraf kaynaklarının değiştirilebileceğini vurgulayan denetim

Lighthouse'un, ana ileti dizisini 250 ms.den uzun süre boyunca engelleyen üçüncü taraf kodunu vurgulayacağını hatırlatmak isteriz. Bu durum, oluşturdukları içeriği görüntülemek için kaydırma gerektiriyorsa yükleme işleminin ertelenmesine veya geç yüklenmesi yararlı olabilecek her tür üçüncü taraf komut dosyasını (Google tarafından yazılmış olanlar dahil) ortaya çıkarabilir.

Üçüncü taraf JavaScript denetiminin maliyetini azaltma

Önemli Web Verileri'nin Ötesinde

Lighthouse ve PageSpeed Insights'ın son sürümleri, Önemli Web Verileri'ni vurgulamanın yanı sıra kaynak haritaları açık olduğunda JavaScript ağırlıklı web uygulamalarının ne kadar hızlı yüklenebileceğini iyileştirmek için izleyebileceğiniz somut bir rehberlik de sağlamaya çalışır.

Bunlar arasında, sayfanızda JavaScript'in maliyetini azaltmak için, kullanıcı deneyimi açısından gerekli olmayabilecek çoklu dolgulara ve kopyalara olan bağımlılığı azaltmak üzere gittikçe artan bir denetim koleksiyonu bulunmaktadır.

Önemli Web Verileri araçları hakkında daha fazla bilgi için Lighthouse ekibinin Twitter hesabına ve DevTools'daki yenilikler'e göz atın.

Mercedes Mehling'in Unsplash'teki hero resmi.