Core Web Vitals'ı iyileştirmenin en etkili yolları

Web topluluğu, yıllar içinde web performansı optimizasyonu hakkında zengin bir bilgi birikimi oluşturdu. Her bir optimizasyon birçok sitenin performansını artırabilir ancak bunların hepsini aynı anda uygulamak çok zor olabilir ve gerçekte bunların yalnızca bazıları belirli bir site için uygulanabilir.

Web performansı tam zamanlı işiniz değilse siteniz için en etkili optimizasyonların hangileri olacağı muhtemelen net değildir. Bunların hepsini uygulamak için zamanınız olmayabilir. Bu nedenle, kendinize kullanıcılarınızın performansını artırmak için seçebileceğiniz en etkili optimizasyonlar neler? sorusunu sormanız önemlidir.

Performans optimizasyonlarıyla ilgili gerçek şudur: Bu optimizasyonları yalnızca teknik özelliklerine göre değerlendiremezsiniz. Ayrıca, belirli bir optimizasyonu uygulama olasılığınızı etkileyen insan ve kurumsal faktörleri de göz önünde bulundurmanız gerekir. Bazı performans iyileştirmeleri teoride çok etkili olabilir ancak gerçekte bunları uygulamak için zaman veya kaynaklara sahip olan geliştirici sayısı azdır. Öte yandan, hemen hemen herkesin zaten uyguladığı, performansı büyük ölçüde etkileyen en iyi uygulamalar da olabilir. Bu kılavuzda, aşağıdakileri sağlayan web performansı optimizasyonları açıklanmaktadır:

  • Gerçek dünyada en büyük etkiye sahip olan
  • Çoğu site için alakalı ve geçerlidir.
  • Çoğu geliştiricinin uygulamaya koyması gerçekçi olmalıdır.

Bu öneriler, Core Web Vitals metriklerinizi iyileştirmenin en gerçekçi ve etkili yolları arasındadır. Web performansı konusunda yeniyseniz veya size en yüksek yatırım getirisini neyin sağlayacağına henüz karar veremiyorsanız başlangıç için en iyi yer burasıdır.

Interaction to Next Paint (INP)

En yeni Core Web Vitals metriği olan Interaction to Next Paint (INP), en büyük iyileştirme fırsatlarından bazılarını sunar. Ancak desteği sonlandırılan önceki sürümüne kıyasla "iyi" deneyimler için eşikten daha az sayıda site geçtiğinden, etkileşim yanıt verimini ilk kez nasıl optimize edeceğinizi öğrenen çok sayıda geliştirici arasında olabilirsiniz. INP'yi artırmanın en etkili yolları için bu bilinmesi gereken tekniklerden başlayın.

1. Uzun görevleri parçalara ayırmak için sık sık yield kullanın

Görevler, oluşturma, düzen, ayrıştırma, derleme veya komut dosyalarını yürütme dahil olmak üzere tarayıcının yaptığı ayrı bir çalışma parçasıdır. Süresi 50 milisaniyeyi aşan görevler uzun görev olarak kabul edilir. Uzun görevler, ana ileti dizisinin kullanıcı etkileşimlerine hızlı yanıt vermesini engelleyebileceğinden sorunludur.

JavaScript'te her zaman mümkün olduğunca az işlem yapmaya çalışmalısınız. Bununla birlikte, uzun görevleri bölerek ana ileti dizisine yardımcı olabilirsiniz. Ana iş parçacığına sık sık teslim vererek bunu yapabilirsiniz. Böylece oluşturma güncellemeleri ve diğer kullanıcı etkileşimleri daha erken gerçekleşebilir.

Browser Support

  • Chrome: 129.
  • Edge: 129.
  • Firefox: not supported.
  • Safari: not supported.

Source

Scheduler API, öncelik sistemi kullanarak işleri sıraya almanıza olanak tanır. Daha açık belirtmek gerekirse scheduler.yield() API'si, uzun görevleri bölerken etkileşimlerin görev kuyruğundaki yerlerinden vazgeçmeden işlenebildiğinden emin olur.

Uzun görevleri bölerek tarayıcıya, kullanıcının erişimini engelleyen kritik işlemleri gerçekleştirmesi için daha fazla fırsat vermiş olursunuz.

2. Gereksiz JavaScript'den kaçının

Web siteleri her zamankinden daha fazla JavaScript gönderiyor ve bu trendin değiştiği görünmüyor. Çok fazla JavaScript gönderdiğinizde, görevlerin ana iş parçacığının dikkati için yarıştığı bir ortam oluşturursunuz. Bu durum, özellikle de önemli olan ilk açılış döneminde web sitenizin duyarlılığını etkileyebilir.

Ancak bu çözülemez bir sorun değildir ve aşağıdaki seçeneklerden yararlanabilirsiniz:

  • Gereksiz, JavaScript tabanlı uygulamalar yerine Temel yaygın olarak kullanılabilen web platformu özelliklerini kullanın.
  • Komut dosyalarınızda kullanılmayan kodu bulmak için Chrome Geliştirici Araçları'ndaki kapsam aracını kullanın. Başlangıç sırasında gereken kaynakların boyutunu azaltarak sayfaların kodu ayrıştırmak ve derlemek için daha az zaman harcamasını sağlayabilirsiniz. Bu da daha sorunsuz bir ilk kullanıcı deneyimi sağlar.
  • İlk oluşturma işlemi için gerekli olmayan ancak daha sonra kullanılacak kod için ayrı bir paket oluşturmak üzere kod bölme özelliğini kullanın.
  • Etiket yöneticisi kullanıyorsanız etiketlerinizi düzenli olarak optimize edin. Etiket Yöneticisi'nizin JavaScript ayak izini azaltmak için kullanılmayan kod içeren eski etiketler kaldırılabilir.

3. Büyük oluşturma güncellemelerinden kaçının

JavaScript'in yürütülmesi, web sitenizin duyarlılığını etkileyen faktörlerden yalnızca biridir. Oluşturma, başlı başına pahalı bir çalışma türüdür. Büyük oluşturma güncellemeleri sırasında web siteniz kullanıcı etkileşimlerine daha da yavaş yanıt verebilir.

Oluşturma işlemini optimize etmek basit bir işlem değildir ve neyi başarmaya çalıştığınıza bağlıdır. Yine de oluşturma görevlerinin uzun görevler haline gelmemesi için yapabileceğiniz bazı işlemler vardır:

  • Zorunlu düzen ve düzen karmaşası'ndan kaçınmak için JavaScript kodunuzdaki DOM okuma ve yazma işlemlerini yeniden düzenleyin.
  • DOM boyutlarını küçük tutun. DOM boyutu ile düzen çalışmasının yoğunluğu arasında bir ilişki vardır. Oluşturucunun çok büyük bir DOM'un düzenini güncellemesi gerektiğinde, düzenini yeniden hesaplamak için gereken çalışma önemli ölçüde artabilir.
  • Ekran dışındaki DOM içeriklerini üşengeç şekilde oluşturmak için CSS kapsayıcıyı kullanın. Bu işlem her zaman kolay değildir ancak karmaşık düzenler içeren alanları ayırarak gereksiz düzen ve oluşturma işlemlerinden kaçınabilirsiniz.

Largest Contentful Paint (LCP)

Largest Contentful Paint (LCP), geliştiricilerin en çok sorun yaşadığı Core Web Vitals metriğidir. Chrome Kullanıcı Deneyimi Raporu'ndaki sitelerin %40'ı, iyi kullanıcı deneyimleri için önerilen LCP eşiğini karşılamıyor. Chrome Ekibi, LCP'yi iyileştirmenin en etkili yolları olarak aşağıdaki teknikleri önerir.

1. LCP kaynağının HTML kaynağından bulunabilir olduğundan ve öncelikli olduğundan emin olun

Chrome ekibi, web'deki LCP ile ilgili olarak aşağıdakileri fark etti:

  • HTTP Archive'nin 2024 Web Almanağı'na göre, mobil sayfaların %73'ünde LCP öğesi olarak bir resim bulunuyor.
  • Chrome'daki gerçek kullanıcı verilerinin analizine göre, LCP'si düşük olan kaynakların çoğu, p75 LCP sürelerinin %10'undan azını LCP resmini indirmek için harcıyor.
  • LCP'si düşük olan sayfalarda, LCP resimlerinin yüklenmesi istemcide 75. yüzdelik dilimde 1.290 milisaniye gecikiyor. Bu,hızlı bir deneyim için bütçenin yarısından fazlası.
  • LCP öğesinin resim olduğu sayfalarda, bu resimlerin% 35'inde ilk HTML yanıtında bulunamayan kaynak URL'ler (<img src="..."> veya <link rel="preload" href="..."> gibi) vardı. Bu URL'ler, tarayıcının ön yükleme tarayıcısının bunları en kısa sürede keşfetmesine olanak tanır.
  • Web Almanağı'na göre, uygun sayfaların %15'i, bir sayfanın LCP'sini nispeten az çabayla iyileştirebilecek kaynaklar da dahil olmak üzere kaynaklara daha yüksek öncelik vermek için fetchpriority HTML özelliğinden yararlanıyordu.

Bu istatistikler, geliştiricilerin LCP resimleri için hem kaynak yükleme gecikmesini hem de kaynak yükleme süresini azaltma konusunda büyük bir fırsata sahip olduğunu gösteriyor.

Browser Support

  • Chrome: 102.
  • Edge: 102.
  • Firefox: 132.
  • Safari: 17.2.

Source

Sorunun kaynak yükleme gecikmesi olduğu durumlarda, bir sayfanın resimlerin yüklenmeye başlaması için CSS veya JavaScript'in tamamen yüklenmesini beklemesi gerekiyorsa iyi bir LCP elde etmek için çok geç olabileceğini unutmayın. Ayrıca, LCP resminin kaynak yükleme süresi, fetchpriority HTML özelliği kullanılarak yeniden önceliklendirerek daha fazla bant genişliği almasını ve dolayısıyla daha hızlı yüklenmesini sağlayarak azaltılabilir.

LCP öğeniz bir resimse resim URL'sinin, kaynak yükleme gecikmesini azaltmak için HTML yanıtında bulunabilir olması gerekir. Bunu yapmanıza yardımcı olacak bazı ipuçları:

  • src veya srcset özelliğine sahip bir <img> öğesi kullanarak resmi yükleyin. Her zaman daha yavaş olacağından, oluşturmak için JavaScript gerektiren data-src gibi standart olmayan özellikleri kullanmayın. Sayfaların %7'sinde LCP resmi data-src öğesinin arkasına gizleniyor.
  • SSR, sayfa işaretlemesinin tamamının (resim dahil) HTML kaynağında bulunduğu anlamına geldiğinden istemci tarafı oluşturma (CSR) yerine sunucu tarafı oluşturmayı (SSR) tercih edin. Görüntünün keşfedilebilmesi için CSR çözümlerinin JavaScript'in çalışması gerekir.
  • Resminize harici bir CSS veya JS dosyasından referans verilmesi gerekiyorsa <link rel="preload"> etiketini kullanarak resme HTML kaynağında yer verebilirsiniz. Satır içi stillerin referans verdiği resimlerin, tarayıcının önyükleme tarayıcısı tarafından bulunamayacağını unutmayın. Bu nedenle, HTML kaynağında bulunsalar bile diğer kaynakların yüklenmesi sırasında keşfedilmeleri engellenebilir. Bu durumlarda önyükleme yardımcı olabilir.

Ayrıca, LCP kaynağının erken ve yüksek öncelikli olarak yüklenmesini sağlayarak bir kaynağın yükleme süresini kısaltabilirsiniz:

  • LCP resminizin <img> veya <link rel="preload"> etiketine fetchpriority="high" özelliğini ekleyin. Bu işlem, resim kaynağının önceliğini artırarak daha erken yüklenmeye başlamasını sağlar.
  • LCP resminizin <img> etiketinden loading="lazy" özelliğini kaldırın. Bu sayede, resmin görüntü alanında veya yakınında göründüğünün onaylanmasından kaynaklanan yükleme gecikmesi önlenir.
  • Mümkün olduğunda kritik olmayan kaynakları erteleyin. Bu kaynakları belgenizin sonuna taşımak, resim veya iFrame'leri gecikmeli olarak yüklemek ya da JavaScript kullanarak eşzamansız olarak yüklemek, LCP resmi gibi daha önemli kaynakların daha hızlı yüklenmesini sağlar.

2. Anında gezinme sunun

İdeal kullanıcı deneyimi, sayfanın yüklenmesini beklemek zorunda kalmamaktır. Kaynak bulunabilirliği ve önceliklendirme gibi LCP optimizasyonları, kullanıcının LCP öğesinin yüklenmesi ve oluşturulması için bekleme süresini azaltmada etkilidir. Ancak bu baytların ağ üzerinden ne kadar hızlı yükleneceği ve bir sayfada oluşturulacağı konusunda fiziksel bir sınır vardır. Bu sınıra ulaşmadan çok önce, yalnızca birkaç milisaniye daha kısaltmak için çok yüksek miktarda çaba gerekir. Bu nedenle, anında gezinme sağlamak için tamamen farklı bir yaklaşım benimsememiz gerekiyor.

Anında gezinmeler, kullanıcı sayfaya gitmeye başlamadan önce sayfayı yükleyip oluşturmaya çalışır. Bu sayede, önceden oluşturulmuş sayfa sıfıra yakın bir LCP ile hemen gösterilebilir. Bunu yapmanın iki yolu vardır: restorasyon ve spekülasyon. Kullanıcı daha önce ziyaret ettiği bir sayfaya geri veya ileri gittiğinde, sayfa bellek içi önbellekten hızlı bir şekilde geri yüklenerek kullanıcının bıraktığı haliyle gösterilebilir. Alternatif olarak, web uygulamaları kullanıcının bir sonraki gideceği yeri tahmin etmeye çalışabilir. Tahmin doğru olduğunda, kullanıcı ilgili sayfaya gittiğinde sayfa zaten yüklenmiş ve oluşturulmuş olur.

Daha önce ziyaret edilen sayfaların geri yüklenmesi geri-ileri önbelleği (bfcache) ile mümkün olur. Bu özelliği kullanmak için sayfalarınızın bfcache uygunluk ölçütlerini karşıladığından emin olmanız gerekir. Sayfaların bfcache için uygun olmamasının yaygın nedenlerinden biri, no-store önbelleğe alma yönergeleriyle yayınlanmaları veya unload etkinlik dinleyicileri içermeleridir.

Tamamen oluşturulmuş sayfaları geri yüklemek yalnızca yükleme performansını değil, düzen kararlılığını da artırır. Sayfaların bfcache için uygun olduğundan emin olma bölümünde bfcache ve CLS'yi iyileştirmedeki etkinliği hakkında daha fazla bilgi edinebilirsiniz.

Browser Support

  • Chrome: 109.
  • Edge: 109.
  • Firefox: not supported.
  • Safari: not supported.

Kullanıcının ziyaret edeceği bir sonraki sayfayı önceden oluşturmak, LCP performansını önemli ölçüde iyileştirmenin etkili bir başka yoludur ve Spekülasyon Kuralları API ile mümkündür. Ancak bu avantajlardan yararlanmak için doğru sayfaların önceden oluşturulduğundan emin olun. Yanlış tahminler hem sunucuda hem de istemcide kaynakları boşa harcar ve performansı düşürebilir. Bu nedenle, bir sonraki sayfanın ne olacağı konusunda ne kadar emin değilseniz ön oluşturma işlemini o kadar dikkatli yapmanız gerekir. Kararsız kaldığınızda analiz verileriniz, bir sonraki ziyaret olasılığı en yüksek olan sayfaları daha hevesli bir şekilde önceden oluşturmanız için size güven verebilir.

3. TTFB'yi optimize etmek için bir CDN kullanma

Önceki öneri, kullanıcılara mümkün olan en iyi deneyimi sunan anında gezinmelere odaklanıyordu. Ancak bfcache ve spekülatif yükleme tekniklerinin uygulanamadığı durumlar olabilir. İlk HTML dokümanı yanıtının LCP'yi etkili bir şekilde engellediği, sitenize giden kaynakta farklı bir kaynak bağlantısını takip eden bir kullanıcıyı düşünün. Tarayıcı, yanıtın ilk baytını alana kadar herhangi bir alt kaynağı yüklemeye başlayamaz. Bu ne kadar erken gerçekleşirse diğer her şey de o kadar erken başlayabilir.

Bu süre ilk bayta geçiş süresi (TTFB) olarak bilinir. TTFB'yi azaltmanın en iyi yolları şunlardır:

  • İçeriğinizi, kullanıcılarınıza coğrafi olarak olabildiğince yakın bir konumda sunun.
  • Yakın gelecekte tekrar istendiğinde hızlıca sunulabilmesi için bu içeriği önbelleğe alır.

Bu ikisini de yapmanın en iyi yolu CDN kullanmaktır. CDN'ler, kaynaklarınızı dünyanın dört bir yanındaki uç sunuculara dağıtarak bu kaynakların kablo üzerinden kullanıcılara ulaşması gereken mesafeyi sınırlandırır. CDN'ler genellikle sitenizin ihtiyaçlarına göre ayarlanabilen ayrıntılı önbelleğe alma denetimlerine de sahiptir.

CDN'ler HTML dokümanlarını da yayınlayıp önbelleğe alabilir ancak Web Almanağı'na göre HTML dokümanı isteklerinin yalnızca% 33'ü CDN'den yayınlandı. Bu, sitelerin ek tasarruflar elde etmesi için önemli bir fırsat olduğu anlamına gelir.

CDN'leri yapılandırmayla ilgili bazı ipuçları:

  • Statik HTML dokümanlarını kısa bir süre için bile önbelleğe alın. Örneğin, içeriğin her zaman güncel olması önemli mi? Yoksa birkaç dakika gecikmiş olabilir mi?
  • Kaynak sunucunuzda çalışan dinamik mantığı, çoğu modern CDN'nin özelliği olan uç noktaya taşıyıp taşıyamayacağınızı inceleyin.

İçeriği doğrudan uçtan sunabildiğiniz ve kaynak sunucunuza gitmekten kaçınabileceğiniz her durum performans açısından bir kazançtır. Başlığa kadar tüm yolculuğu yapmanız gereken durumlarda bile CDN'ler genellikle bunu daha hızlı yapmak için optimize edildiğinden her iki durumda da kazançlı olursunuz.

Cumulative Layout Shift (CLS)

Cumulative Layout Shift (CLS), bir web sayfasının görsel kararlılığını ölçer. CLS, çoğu sitenin iyi performans gösterdiği bir metrik olsa da yaklaşık dörtte biri hâlâ önerilen eşiği karşılamıyor. Bu nedenle, birçok sitenin kullanıcı deneyimini iyileştirmek için yararlanabileceği büyük bir fırsat var.

1. Sayfadan yüklenen tüm içeriklerde net boyutlar ayarlama

Düzen kaymaları genellikle diğer içerikler yüklendikten sonra mevcut içerikler taşındığında gerçekleşir. CLS'yi iyileştirmenin birincil yolu, gerekli alanı mümkün olduğunca önceden ayırmaktır.

Boyutlandırılmamış resimlerden kaynaklanan düzen kaymalarını düzeltmenin en iyi yolu, width ve height özelliklerini veya eşdeğer CSS özelliklerini açıkça ayarlamaktır. Sayfaların %66'sında en az bir boyutlandırılmamış resim var. Belirli bir boyutu olmayan bu resimlerin başlangıç yüksekliği 0px'tür. Bu durum, resimler yüklendiğinde ve tarayıcı boyutlarını keşfettiğinde düzen kaymalarına neden olabilir. Bu, kolektif web için büyük bir fırsattır ve bu fırsat, bu kılavuzda önerilen diğer önerilerden bazılarına kıyasla daha az çaba gerektirir.

Browser Support

  • Chrome: 88.
  • Edge: 88.
  • Firefox: 89.
  • Safari: 15.

Source

CLS'ye katkıda bulunan tek öğe resimler değildir. Düzen kaymalarına, genellikle sayfa ilk oluşturulduktan sonra yüklenen diğer içerikler (ör. üçüncü taraf reklamlar veya yerleştirilmiş videolar) neden olabilir. aspect-ratio mülkü bu konuda yardımcı olabilir. Geliştiricilerin resimlerin yanı sıra resim dışı öğelerde de en boy oranını açıkça ayarlamalarına olanak tanıyan yaygın olarak kullanılabilen bir temel CSS özelliğidir. Bu sayede dinamik bir width (ör. ekran boyutuna göre) ayarlayabilir ve tarayıcıdan, boyutları olan resimlerde olduğu gibi uygun yüksekliği otomatik olarak hesaplamasını isteyebilirsiniz.

Ancak dinamik içeriğin tam boyutunu her zaman bilmek mümkün değildir. Tam boyutu bilmeseniz bile sayfa düzeni değişikliklerinin önemini azaltabilirsiniz. Makul bir min-height değeri ayarlamak, tarayıcının boş bir öğe için varsayılan 0px yüksekliğini kullanmasına izin vermekten neredeyse her zaman daha iyidir. min-height kullanmak da genellikle basit bir çözümdür. Çünkü gerektiğinde kapsayıcının nihai içeriğin yüksekliğine kadar büyümesine izin verir. Bu büyüme miktarını, daha kabul edilebilir bir düzeye indirir.

2. Sayfaların bfcache için uygun olduğundan emin olma

Bu kılavuzun önceki bölümlerinde belirtildiği gibi, geri/ileri önbellek (bfcache), tarayıcı geçmişinde daha önceki veya sonraki bir sayfayı bellek anlık görüntüsünden anında yükler. Bfcache, LCP'yi iyileştiren tarayıcı düzeyinde önemli bir performans optimizasyonudur ancak düzen kaymalarını da tamamen ortadan kaldırır. Aslında, 2022'de bfcache'in kullanıma sunulması, o yıl CLS'de gördüğümüz en büyük iyileşmeden sorumluydu.

Buna rağmen önemli sayıda web sitesi bfcache için uygun değildir ve bu nedenle ücretsiz web performansı avantajından yararlanamaz. Sayfanız, bellekten geri yüklenmesini istemediğiniz hassas bilgiler yüklemiyorsa sayfalarınızın bfcache'i kullanmaya uygun olduğundan emin olun.

Site sahipleri, sayfaların bfcache için uygun olup olmadığını kontrol etmeli ve uygun olmama nedenlerini düzeltmelidir. Chrome'da Geliştirici Araçları'nda bir bfcache test cihazı vardır. Ayrıca, alandaki uygunluk koşullarını karşılamama nedenlerini tespit etmek için Not Restored Reasons API'yi de kullanabilirsiniz.

3. Yerleşim oluşturan CSS özelliklerini kullanan animasyonlardan ve geçişlerden kaçının

Düzen hareketlerinin sık karşılaşılan bir diğer nedeni de öğelerin animasyonlu olmasıdır. Örneğin, üstten veya alttan kayan çerez banner'ları ya da diğer bildirim banner'ları genellikle CLS'ye katkıda bulunur. Bu durum, özellikle bu banner'lar diğer içeriği engellediğinde sorun teşkil eder. Ancak engellemediğinde bile animasyonlu banner'lar CLS'yi etkileyebilir.

HTTP Archive verileri, animasyonlarla sayfa düzeni değişiklikleri arasında kesin bir bağlantı kuramaz. Ancak veriler, sayfa düzenini etkileyebilecek CSS özelliklerini animasyonlu olarak kullanan sayfaların "iyi" CLS değerine sahip olma olasılığının genel sayfalara kıyasla% 15 daha düşük olduğunu gösteriyor. Bazı mülkler, diğerlerinden daha kötü CLS ile ilişkilidir. Örneğin, margin veya border genişliklerinde animasyon içeren sayfaların CLS değeri, genel olarak sayfaların kötü olarak değerlendirilme oranının neredeyse iki katı kadar "kötü"dür.

Bu durum şaşırtıcı değildir. Çünkü yerleşime neden olan herhangi bir CSS özelliğinde geçiş yaptığınızda veya animasyon uyguladığınızda yerleşim kaymaları meydana gelir. Bu yerleşim kaymaları, kullanıcı etkileşiminin 500 milisaniye içinde gerçekleşmezse CLS'yi etkiler.

Bazı geliştiriciler için şaşırtıcı olabilecek bir durum da, öğenin normal belge akışının dışına alındığı durumlarda bile bu durumun geçerli olmasıdır. Örneğin, top veya left öğelerini animasyonlu hale getiren ve mutlak konumlandırılmış öğeler, diğer içerikleri itmese bile sayfa düzeninde kaymalara neden olur. Ancak top veya left yerine transform:translateX() veya transform:translateY() öğesini animasyonlu hale getirirseniz tarayıcı sayfa düzenini güncellemez ve böylece düzen kaymalarından kaçınılır.

Tarayıcıdaki oluşturucu iş parçacığında güncellenebilen CSS özelliklerinin animasyonu tercih etmek, bu işi ana iş parçacığından GPU'ya taşıdığı için uzun zamandır performansla ilgili en iyi uygulamalardan biri olmuştur. Bu, genel performansla ilgili en iyi uygulamalardan biri olmasının yanı sıra CLS'yi iyileştirmeye de yardımcı olabilir.

Genel kural olarak, kullanıcının dokunmasına veya tuş basmasına yanıt olarak yapmadığınız sürece (hover olmasa da) tarayıcının sayfa düzenini güncellemesini gerektiren CSS özelliklerini hiçbir zaman animasyonlu hale getirmeyin veya geçiş yapmayın. Mümkün olduğunda, CSS transform mülkünü kullanarak geçişleri ve animasyonları tercih edin.

Birleştirilmemiş animasyonlardan kaçının Lighthouse denetimi, bir sayfa potansiyel olarak yavaş CSS özelliklerini animasyonlu hale getirdiğinde uyarı verir.

Sonuç

Sayfa performansını iyileştirmek, özellikle de web'de dikkate alınması gereken çok sayıda kılavuz olduğu düşünüldüğünde göz korkutucu görünebilir. Ancak en etkili en iyi uygulamaların yer aldığı bu kısa listeye odaklanarak soruna yeni bir odaklanmayla yaklaşabilir ve web sitenizin Core Web Vitals puanını iyileştirebilirsiniz.

Burada listelenen optimizasyonların ötesine geçmek istiyorsanız daha fazla bilgi için şu kılavuzları okuyun:

Ek: Değişiklik günlüğü

En iyi önerilerin ne zaman ve neden değiştiğini açıklamaya yardımcı olmak için bu dokümanda yapılan önemli değişiklikler burada izlenir.

Ekim 2024

2024 güncellemesi:

  • INP
    • INP'nin Core Web Vitals metriği olarak kullanıma sunulmasıyla birlikte bu metriği FID'den INP'ye geçirdik ve listedeki en önemli metrik haline getirdik.
    • Uzun görevleri bölmek için isInputPending API'yi kullanma önerimizi geri çektik. Bu kararımızın nedenlerini Uzun Görevleri Optimize Etme makalesinde bulabilirsiniz.
  • LCP
    • Keşfedilebilirlik ve önceliklendirme önerilerini tek bir yerde birleştirdik.
    • Anında gezinme hedefi için yeni bir öneri ekledik.

Ocak 2023

İlk öneri listesi şu şekildedir:

  • LCP
    • LCP kaynağının HTML kaynağından bulunabilir olduğundan emin olun
    • LCP kaynağına öncelik verildiğinden emin olun
    • Doküman ve kaynak TTFB'sini optimize etmek için CDN kullanma
  • CLS
    • Sayfadan yüklenen tüm içeriklerde net boyutlar ayarlama
    • Sayfaların bfcache için uygun olduğundan emin olma
    • Yerleşim oluşturan CSS özelliklerini kullanan animasyonlardan ve geçişlerden kaçının
  • FID
    • Uzun görevlerden kaçının veya uzun görevleri bölün
    • Gereksiz JavaScript'ten kaçının
    • Büyük oluşturma güncellemelerinden kaçının

Video özeti için bu 2023 Google I/O sunumunu da izleyebilirsiniz.