Etkileşimden Sonraki Boyamaya Kadar Geçen Süre (INP)

INP neyi ölçer, p75'teki ≤200 ms eşiği nedir, 2024'te neden FID'nin yerini aldı ve kötü puan gerçekte nasıl düzeltilir? Teknik SEO uzmanından rehber.

Etkileşimden Sonraki Boyamaya Kadar Geçen Süre (INP), yanıt verebilirliği ölçen Core Web Vital'dır. Ziyaret boyunca her tıklama, dokunma ve klavye etkileşimini izler; bunların neredeyse tamamının altında kaldığı gecikmeyi raporlar. Sahada 75. yüzdelik dilimde ölçülür. İyi değer ≤200 ms, kötü değer >500 ms'dir. INP, 12 Mart 2024'te First Input Delay'in yerini aldı; çünkü FID yalnızca ilk etkileşimin giriş gecikmesini ölçüyordu. INP ise bütün etkileşimlerin tam gecikmesini — giriş gecikmesi + işleme + sunum — ölçer. Uzun görevleri bölerek, ana iş parçacığına kontrolü bırakarak, olay işleyicilerinde daha az iş yaparak, DOM'u küçülterek ve üçüncü taraf betiklerini dizginleyerek iyileştirirsiniz. Saha metriğidir; laboratuvardaki yaklaşık karşılığı Total Blocking Time'dır.

TL;DR — INP, yanıt verebilirliği ölçen Core Web Vital’dır. Bir ziyaret boyunca tüm tıklama, dokunma ve klavye etkileşimlerinin gecikmesini izler; FID gibi yalnızca ilk girdiyi değil, 75. yüzdelikteki değeri raporlar (her 50 etkileşimde bir aykırı değer çıkarılır). Etkileşim gecikmesi = girdi gecikmesi + işleme süresi + sunum gecikmesi. Alan verilerinin 75. yüzdeliğinde 200 ms ve altı iyi, 500 ms üzeri kötüdür. INP, 12 Mart 2024’te FID’nin yerini aldı; FID Eylül 2024’te araçlardan tamamen kaldırıldı. Uzun görevleri bölerek, scheduler.yield() ile ana iş parçacığına söz vererek, olay işleyicilerinde daha az iş yaparak, DOM’u küçülterek ve üçüncü taraf betiklerini erteleyerek iyileştirin. Bu bir alan metriğidir; Total Blocking Time laboratuvar vekilidir ve ikisi her zaman aynı sonucu vermez.

INP neyi ölçer ve FID’den nasıl ayrılır?

Google’ın tanımı nettir: “INP is a Core Web Vitals metric that assesses a page’s overall responsiveness to user interactions by observing the latency of all click, tap, and keyboard interactions that occur throughout the lifespan of a user’s visit to a page.” (Türkçe çeviri) “INP, bir kullanıcının sayfa ziyareti boyunca gerçekleşen tüm tıklama, dokunma ve klavye etkileşimlerinin gecikmesini gözlemleyerek sayfanın kullanıcı etkileşimlerine genel yanıt verebilirliğini değerlendiren bir Core Web Vitals metriğidir.”

Bu iddiaya ilişkin kanıt INP observes click, tap, and keyboard interaction latency throughout a page visit rather than measuring only the first input delay. Kapsam: Current web.dev INP definition and qualifying interaction types. Güven düzeyi: yüksek · Doğrulandı: web.dev: Interaction to Next Paint

“Ziyaret boyunca tüm etkileşimler” ifadesi konunun özüdür. INP, yükleme zamanı değil, ziyaret düzeyi bir metriktir. Google’ın gerekçesi, kullanıcının sayfadaki zamanının büyük bölümünü sayfa yüklendikten sonra geçirmesidir; bu yüzden kullanım sırasındaki yanıt verebilirlik, yalnızca ilk izlenimden daha önemlidir.

First Input Delay ile karşılaştırmak farkı en açık biçimde gösterir: “FID only measured the input delay of the first interaction on a page. INP improves on FID by observing all interactions on a page, beginning from the input delay, to the time it takes to run event handlers.” (Türkçe çeviri) “FID yalnızca sayfadaki ilk etkileşimin girdi gecikmesini ölçüyordu. INP, girdi gecikmesinden olay işleyicilerinin çalışma süresine kadar sayfadaki tüm etkileşimleri gözlemleyerek FID’yi geliştirir.” FID, tek bir etkileşimde işleyicinin başlamasından önceki beklemeyi ölçer; işleyicinin ne kadar çalıştığını ve ekranın ne zaman güncellendiğini hesaba katmazdı. INP ise her etkileşimin tam gecikmesini ölçer.

Yaygın bir yanılgıyı da düzeltelim: INP doğrudan en kötü etkileşim değildir. Tarayıcı, tek bir rastlantısal sıçrama yüzünden sayfayı cezalandırmamak için her 50 etkileşimde bir aykırı değeri çıkarır, sonra değeri sayfa görüntülemelerinin 75. yüzdeliğinde raporlar. Az etkileşimli bir ziyarette bu, en yavaş etkileşime denk gelir; yoğun bir ziyarette önce birkaç aykırı değer elenir.

Etkileşim sayılan davranışlar da sanılandan dardır. Yalnızca tıklamalar, dokunmalar ve klavye basışları ölçülür; kaydırma, üzerine gelme ve yakınlaştırma açıkça kapsam dışıdır. Tek bir hareket pointerdown, pointerup ve click gibi birkaç olayı tetikleyebilir; INP bunları üç değil tek etkileşim olarak gruplar. Grup içinde olay sürelerini toplamak yerine en uzun tek olay süresini kullanır. Hızlı bir pointerdown ile yavaş bir click, yavaş olaya göre boyutlanan tek etkileşim olarak raporlanır. Ziyarette uygun bir etkileşim yoksa INP değeri de raporlanmaz.

Etkileşim gecikmesinin üç bölümü

Her etkileşimin gecikmesi art arda gelen üç parçaya ayrılır. Her parça farklı bir çözüme işaret ettiği için bu modeli akılda tutun:

Interaction latency = Input delay + Processing duration + Presentation delay

  1. Girdi gecikmesi — Genellikle ana iş parçacığı uzun bir görevi bitirmekle meşgul olduğu için olay işleyicilerinizin başlayamadığı bekleme süresi.
  2. İşleme süresi — Tüm olay işleyici geri çağrılarının yürütülme süresi.
  3. Sunum gecikmesi — İşleyicilerin bitişinden tarayıcının sonraki kareyi ekrana çizmesine kadar geçen süre.

web-vitals ilişkilendirme derlemesi üç parçayı da (inputDelay, processingDuration, presentationDelay) gösterir; böylece gerçek bir etkileşimde hangisinin baskın olduğunu görebilirsiniz. Web Almanac’ın 2024 verilerinde medyanda en büyük tek parça çoğu zaman sunum gecikmesidir. Ancak kötü oluşturulmuş sayfalarda en çok şişen bölüm olduğu için optimizasyon fırsatı genellikle işleme süresindedir.

INP tüm etkileşimi ölçer. Çözümü seçmeden önce gecikmenin bekleme, işleyici veya sunum aşamasından kaynaklandığını belirleyin. Kaynak: web.dev

Etkileşim, olay ana iş parçacığını beklerken giriş gecikmesiyle başlar. Ardından olay işleyici callback'leri çalışırken işleme süresi gelir. Sunum gecikmesi, işleyicilerin bitişinden tarayıcının sonraki kareyi düzenleyip çizmesine kadar sürer. Bu üç ardışık aşama birlikte INP'nin ölçtüğü etkileşim gecikmesini oluşturur.

© Patrick Stox LLC · CC BY 4.0 ·

Eşikler ve p75 alan verisi uyarısı

DeğerlendirmeINP değeriÖlçüm noktası
İyi≤ 200 ms75. yüzdelik, alan
İyileştirme gerekiyor> 200 ms ve ≤ 500 ms75. yüzdelik, alan
Kötü> 500 ms75. yüzdelik, alan

Google Search Central hedefi açıkça “an INP of less than 200 milliseconds” (Türkçe çeviri) “200 milisaniyeden düşük bir INP” olarak verir ve programı “We highly recommend site owners achieve good Core Web Vitals for success with Search.” (Türkçe çeviri) “Site sahiplerinin Arama’da başarı için iyi Core Web Vitals değerlerine ulaşmasını önemle öneriyoruz.” diye çerçeveler. Tarayıcının 60 fps’de yaklaşık her 16,7 ms’de bir kare çizmek istediği düşünülürse 200 ms bütçesi gerçekten dardır; işleyici işiyle oluşturma işlemlerinin tamamı bu süreye sığmalıdır.

Bu iddiaya ilişkin kanıt INP is good at 200 milliseconds or less and poor above 500 milliseconds, assessed at the 75th percentile. Kapsam: Current web.dev INP thresholds for field measurement. Güven düzeyi: yüksek · Doğrulandı: web.dev: Interaction to Next Paint

INP neden alan metriğidir? Laboratuvar verisi neden yetmez?

Birçok SEO uzmanını yanıltan nokta şudur: yeşil bir Lighthouse puanı, iyi INP anlamına gelmez. “Lighthouse INP’yi ölçemez” sözü de tek değil, üç ayrı durumla açıklanmalıdır:

  1. Standart, etkileşimsiz Lighthouse çalıştırması hiçbir INP raporlamaz. Yalnızca sayfanın yüklenmesini gözlemler; tıklamaz, dokunmaz veya yazmaz. Bu yüzden süre tutulacak etkileşim yoktur. Lighthouse bunun yerine yükleme zamanı vekili olarak Total Blocking Time (TBT) kullanır. Google bunu “Because TBT correlates well with INP, a page with a high TBT is a reasonable indicator that there may be high INP values during load.” (Türkçe çeviri) “TBT, INP ile iyi korelasyon gösterdiğinden yüksek TBT’ye sahip bir sayfa, yükleme sırasında yüksek INP değerleri olabileceğine dair makul bir göstergedir.” diye açıklar. Buradaki kilit nokta yükleme aşamasıdır. TBT, on saniye sonra tembel yüklenen bir bileşenin bozduğu etkileşimi göstermez; vekildir, ikame veya dönüşüm formülü değildir.
  2. DevTools’ta gerçek bir düğmeye tıklamak ya da laboratuvar aracında tıklama betiği çalıştırmak gibi elle veya sentetik olarak gerçekleştirilen bir etkileşim, o etkileşim için gerçek INP benzeri gecikme üretir. Belirli bir hatayı yeniden oluşturmak için yararlıdır. Yine de tek cihazdaki tek betikli yoldur; gerçek cihaz, kullanıcı, hedef ve tam ziyaret ömrü çeşitliliğini temsil edemez. Google’ın ifadesiyle sonuç “will be dependent on what interactions are performed during the measurement period” (Türkçe çeviri) “ölçüm döneminde hangi etkileşimlerin gerçekleştirildiğine bağlı olacaktır”; gerçek kullanıcı davranışı tek bir laboratuvar çalışmasının temsil edemeyeceği kadar değişkendir.
  3. INP’nin kendisi alan dağılımıdır. Bu nedenle yetkili kaynak alan verisidir: PageSpeed Insights ve Search Console Core Web Vitals raporunda sunulan Chrome User Experience Report (CrUX). “Field data is the best source of information you can draw on when it comes to understanding which interactions are problematic for actual users.” (Türkçe çeviri) “Gerçek kullanıcılar için hangi etkileşimlerin sorunlu olduğunu anlamada yararlanabileceğiniz en iyi bilgi kaynağı alan verisidir.”

Yavaş etkileşimi bulup yeniden üretmek için laboratuvarı (1 ve 2), gerçek ziyaretçi puanlarını düşürüp düşürmediğini doğrulamak için alan verisini (3) kullanın.

INP puanınız neden kötüdür?

INP sorunlarının neredeyse tamamı, kullanıcı etkileşirken ana iş parçacığının engellenmesine dayanır. Olağan şüpheliler şunlardır:

  • Uzun görevler. 50 ms üzerindeki her ana iş parçacığı işi uzun görev kabul edilir; 50 ms’yi aşan bölüm “engelleme süresi” olarak adlandırılır. Görev çalışırken etkileşim işlenemez. En büyük neden budur.
  • Ağır olay işleyicileri. Tıklama veya girdi işleyicisinde eşzamanlı çok iş yapmak, işleme süresini doğrudan artırır.
  • Büyük DOM. Büyük DOM’ların oluşturulması daha pahalıdır; hem girdi hem sunum gecikmesini artırır.
  • Üçüncü taraf betikleri. Web Almanac’a göre izin sağlayıcıları, etiket yöneticileri, analiz ve sohbet bileşenleri başlıca suçlulardır; basit içerik sitelerini bile etkilerler. Kendi oluşturmadığım bir sayfada ilk baktığım yer burasıdır.
  • Yükleme sonrası JavaScript. Sayfanın çizilmiş olması yüklemenin bittiği anlamına gelmez; ilk çizimden sonra değerlendirilen betikler erken etkileşimleri engelleyebilir.

Nasıl düzeltilir?

Yaklaşık etki sırasına göre stratejiler:

1. Uzun görevleri bölün. Google’ın işleyicilere ilişkin temel önerisi “do as little work as possible in them” (Türkçe çeviri) “içlerinde mümkün olduğunca az iş yapın” şeklindedir. Büyük işi küçük görevlere ayırın; böylece tarayıcı araya kullanıcı etkileşimi alabilir. Görevler bölündüğünde “the browser can respond to higher-priority work much sooner — including user interactions.” (Türkçe çeviri) “tarayıcı, kullanıcı etkileşimleri dahil daha yüksek öncelikli işlere çok daha erken yanıt verebilir.”

2. Ana iş parçacığına söz verin. Modern ve önerilen yöntem scheduler.yield() (Chrome 129+, Firefox 142+): await scheduler.yield() kodunuzu duraklatır, tarayıcının bekleyen işleri işlemesine izin verir ve öncelikli biçimde sürdürür; başka görevler devam kodunuzun önüne geçmez. Klasik setTimeout(..., 0) alternatifi çalışır, fakat kodu görev kuyruğunun sonuna gönderir; ayrıca tarayıcılar iç içe birkaç çağrıdan sonra 5 ms alt sınır uygular. Artık kullanmamanız gereken yöntem isInputPending()’dir: Google “we no longer recommend using this API.” (Türkçe çeviri) “artık bu API’nin kullanılmasını önermiyoruz” diyor. Örnek için Scripts sekmesine bakın.

3. Olay işleyicilerinde daha az iş yapın; kritik olmayanı erteleyin. Yalnızca sonraki karenin gerektirdiği görsel güncellemeyi eşzamanlı çalıştırın. Kaydetme, yazım denetimi, analiz ve sözcük sayımı gibi diğer işleri requestAnimationFrame + setTimeout arkasına veya bir yield sonrasına taşıyın. Kullanıcı yanıtı hemen görür; kayıt işleri sonra yapılır.

4. Düzen çırpınmasını önleyin. Aynı görevde stilleri yazdıktan hemen sonra düzen özelliklerini okumak, tarayıcıyı normalde toplu yapabileceği eşzamanlı düzene zorlar. Önce okumaları, sonra yazmaları toplu gerçekleştirin.

5. DOM boyutunu azaltın. Küçük ağaçlar daha hızlı oluşturulur. content-visibility, ekran dışındaki öğeleri tembel oluşturup yükleme veya etkileşim maliyetini azaltabilir.

6. Üçüncü taraf betiklerini denetleyip erteleyin. Gerçek sitelerde en yüksek getirili SEO düzeltmelerinden biridir. İzin, etiket ve analiz betiklerini tembel yükleyin, etkileşime bağlayın veya kritik yolun dışına taşıyın. “Hafif” bir içerik sayfası yalnızca ağır gömülü bileşen yüzünden INP’den kalabilir.

INP sıralamaları etkiler mi?

Evet. INP üç Core Web Vital’dan biridir ve Core Web Vitals, Google’ın sayfa deneyimi sinyallerinin parçasıdır. Ancak hafif bir sinyaldir: birincil sıralama faktörü değil, benzer derecede alakalı sonuçlar arasında eşitlik bozucudur. İçerik ve alaka pahasına kusursuz INP peşinde koşmayın.

İki pratik SEO noktası var. Birincisi, mobil zorlu ölçümdür. 2024 Web Almanac’ta mobil sitelerin yaklaşık %74’ü, masaüstü sitelerin yaklaşık %97’si INP’den geçti. Google mobil öncelikli dizine eklediği için önemli sayı mobildir. İkincisi, karmaşık siteler daha kötü sonuç verir: En büyük 1 000 sitenin yalnızca yaklaşık %53’ü geçti; özellik bakımından zengin sayfalar ana iş parçacığını engelleyen daha fazla JavaScript gönderir. Yoğun özellik geliştirme INP riskidir; ürün, ödeme, arama sonucu ve form sayfaları gibi etkileşimi yüksek sayfalar statik içerikten çok daha açıktadır.

INP ve FID: tam tablo

FID (kullanımdan kaldırıldı)INP (güncel)
EtkileşimlerYalnızca ilkTüm ziyaret boyunca hepsi
Ölçtüğü süreYalnızca girdi gecikmesiGirdi gecikmesi + işleme + sunum
İyi eşiği≤ 100 ms≤ 200 ms
DurumEylül 2024’te araçlardan kaldırıldı12 Mart 2024’ten beri Core Web Vital

FID artık yoktur: INP’nin kullanıma sunulduğu gün Search Console’dan, Eylül 2024’e kadar da CrUX BigQuery/API’den kaldırıldı. Bir araç veya denetim hâlâ FID’ye başvuruyorsa eskidir.

INP verilerinin uyuşmamasına yol açan uç durumlar

Yaşam döngüsündeki birkaç ayrıntı, “RUM neden CrUX ile eşleşmiyor?” sorularının çoğunu açıklar:

  • Etkileşim yoksa INP de yoktur. Ziyarette tıklama, dokunma veya tuş basışı olmazsa ya da yalnızca kaydırma ve üzerine gelme gibi kapsam dışı hareketler gerçekleşirse o sayfa görüntüleme için INP değeri yoktur. Bu, salt okunur içerik sayfalarında normaldir; izleme hatası değildir.
  • Iframe etkileşimleri metriğe katılır, ancak kendi JavaScript’iniz iframe’in içini göremez. Reklam, bileşen veya form gibi gömülü iframe içindeki etkileşim sayfanın INP’sine katkıda bulunur. Birinci taraf RUM betiği ise tarayıcının metriği gibi çapraz kaynaklı iframe olaylarını okuyamaz. Bu nedenle üçüncü taraf gömüler bulunan sayfalarda CrUX ile aynı kaynaklı RUM meşru biçimde ayrışabilir. RUM/alan uyumsuzluğunu hata saymak yerine bu boşluğu belgeleyin.
  • Geri/ileri önbelleği geri yüklemeleri INP’yi sıfırlar. Örneğin geri düğmesiyle bfcache’den getirilen sayfa yeni bir INP sayımı başlatır; sayfadan ayrılmadan önceki etkileşimler taşınmaz.
  • Uzun süre açık veya arka plana alınmış sekmeler de raporlanmalıdır. Özellikle mobilde işletim sistemi sekmeyi sonlandırabildiği için sekme saatlerce açık kalıp resmen hiç boşaltılmayabilir. INP yalnızca boşaltmada değil, sayfa gizlendiğinde yakalanmalıdır. Yalnızca unload sırasında gönderen RUM kurulumları bu ziyaretlerin verisini sessizce yitirir.

Büyük resimdeki yeri

INP, yüklemeyi ölçen Largest Contentful Paint ve görsel kararlılığı ölçen Cumulative Layout Shift ile birlikte Core Web Vitals tablosunun bir parçasıdır. Alan verisini PageSpeed Insights ve Search Console raporunda kontrol edin; laboratuvarda TBT vekiliyle Lighthouse / Chrome DevTools üzerinden hata ayıklayın. Hepsinin arkasındaki veri CrUX’tan gelir.

Uzman notu ekle

Uzman alıntısını sabitle

Yeni biri mi? Sahipsiz profilini şu bağlantıdan oluşturun: /admin/experts/ → Uzman alıntısını sabitle Bu işlemi önce tamamlayın.