Drag Arrow LeftKAYDIR Drag Arrow Right
img Solviera Teknoloji Solviera Teknoloji

Solviera Teknoloji, işletmenizin potansiyelini dijital dünyada zirveye taşır. Dijital pazarlama, SMS altyapı yazılımları ve kurumsal kaynak yönetimi alanlarındaki uzman çözümlerimizle dijital dönüşümünüzde güvenilir ortağınız olmaya hazırız.

CWV INP Metriği: Tepkisellikten Mükemmelliğe Giden Yol

  • Blog Yazılarımız
  • Dijital Pazarlama
Blog Image

Core Web Vitals'ın Yeni Metriği INP (Interaction to Next Paint): Nedir ve Nasıl Optimize Edilir?

E-ticaret dünyasını bir perakende mağazası olarak hayal edin. Yakın zamana kadar, dijital vitrininizin başarısını ölçen en önemli metriklerden biri olan FID (First Input Delay), bir müşterinin mağazaya girdiği anda ona ne kadar hızlı "hoş geldiniz" dendiğini ölçüyordu. İlk izlenim şüphesiz önemlidir, ancak hikayenin yalnızca başlangıcıdır. Müşteri bir ürün hakkında soru sorduğunda, reyonlar arasında gezinirken yardım istediğinde veya kasada ödeme yapmaya çalıştığında ne olur? Eğer her adımda gecikme, takılma ve hayal kırıklığı yaşıyorsa, o sıcak "hoş geldiniz" cümlesinin ne anlamı kalır?

İşte Google'ın web performans felsefesindeki devrim tam da bu noktada başlıyor. FID metriğinin emekli edilip yerine INP (Interaction to Next Paint) metriğinin getirilmesi, sadece bir teknik güncelleme değil, zihniyet değişikliğidir. Google artık bize şunu söylüyor: "Sadece ilk izlenime değil, kullanıcının sayfanızda geçirdiği her anın kalitesine, tüm deneyimin akıcılığına odaklanıyorum." INP, mağazaya giren müşterinin sorduğu her soruya, dokunduğu her ürüne, ödeme terminalinde bastığı her tuşa ne kadar hızlı ve tatmin edici bir yanıt aldığını ölçer. Sayfanızın sadece hızlı açılması değil, tüm kullanım süresi boyunca hızlı hissettirmesi gerektiğini söyler.

Bu değişim, e-ticaret yöneticileri, geliştiriciler ve SEO uzmanları için oyunun kurallarını yeniden yazıyor. Artık mesele sadece bir karşılama hızı değil, baştan sona kusursuz bir hizmet sunma maratonudur. Bu rehber, Google'ın kullanıcı deneyimini ölçmedeki bu yeni ve daha zorlu metriğinde ustalaşmanız, INP skorlarınızı iyileştirmeniz ve rakiplerinizden sıyrılarak hem kullanıcıların hem de arama motorlarının sevgisini kazanmanız için hazırlanmış nihai oyun kitabınızdır.

Neden Değişti? FID'nin Zayıf Yönleri ve INP'nin Doğuşu

INP'nin neden bu kadar önemli bir devrim olduğunu tam olarak kavramak için, emekliye ayrılan selefi FID'nin neden yetersiz kaldığını anlamamız gerekiyor. FID, iyi niyetli bir metrik olmasına rağmen, bir web sayfasının gerçek kullanıcı deneyimini ölçmede önemli bir zayıflığa sahipti: sadece ilk etkileşimin gecikmesini ölçüyordu.

Bir kullanıcı sitenize geldiğinde ve bir menüyü açmak için tıkladığında, FID o ilk tıklama ile tarayıcının o isteğe yanıt vermeye başlaması arasındaki gecikmeyi (input delay) ölçerdi. Bu, sayfanın ne kadar "meşgul" olduğuna dair bir ilk sinyal veriyordu. Ancak sorun şuydu: Bir sayfanın kaderi ilk tıklamadan ibaret değildir.

Hikayeleştirme: FID'nin Gözden Kaçırdığı Senaryo

Büyük bir online giyim mağazası yönettiğinizi düşünün. Siteniz hızla yükleniyor ve kullanıcı "Tüm Ürünler" butonuna tıkladığında (ilk etkileşim), menü anında açılıyor. FID skorunuz mükemmel! Ancak asıl kabus bundan sonra başlıyor. Kullanıcı, ürün listeleme sayfasına geldiğinde:

  • Filtreleme Menüsü: "Beden" filtresinden "Medium" seçeneğine tıkladığında, sayfanın kendini yenilemesi 2 saniye sürüyor.
  • Renk Seçimi: Bir ürünün farklı renklerini görmek için küçük resimlere tıkladığında, büyük ürün görselinin değişmesi fark edilir derecede yavaş.
  • Akordeon Menü: "Ürün Detayları" akordeonunu açmaya çalıştığında, içerik takılarak ve gecikmeli olarak beliriyor.
  • Sepete Ekle: En kritik an olan "Sepete Ekle" butonuna tıkladığında, butonun bir anlığına donması ve geri bildirim vermemesi, kullanıcının butona tekrar tekrar basmasına neden oluyor.

Bu senaryoda FID, ilk "hoş geldiniz" anı mükemmel olduğu için size yeşil ışık yakar. Ancak kullanıcı, sinir bozucu, yavaş ve kalitesiz bir deneyim yaşayarak sepeti terk etme noktasına gelmiştir. İşte INP (Interaction to Next Paint) bu kör noktayı ortadan kaldırmak için doğdu.

INP, FID gibi sadece ilk etkileşime odaklanmaz. Bir kullanıcının sayfa ziyareti boyunca yaptığı tüm tıklama, dokunma ve klavye etkileşimlerini gözlemler. Bu etkileşimlerin her birinin ne kadar sürdüğünü ölçer ve bu ölçümlerin büyük çoğunluğunun (genellikle 98. persentil) altında kaldığı tek bir değeri size raporlar. Yani INP, sayfanızın en yavaş etkileşim deneyimlerinden birini temsil eder. Google'a göre, 200 milisaniyenin altındaki bir INP skoru iyi, 200ms ile 500ms arası "iyileştirilmesi gerekiyor" ve 500 milisaniyenin üzeri zayıf kabul edilir. Bu, artık tek bir anı değil, tüm kullanıcı yolculuğu boyunca tutarlı bir akıcılık sağlamanız gerektiği anlamına gelir.

Bir Etkileşimin Anatomisi: INP Zaman Çizelgesini Deşifre Etmek

INP'yi optimize edebilmek için önce onun neyi ölçtüğünü atomik düzeyde anlamamız gerekir. Kullanıcının basit bir tıklaması gibi görünen eylem, arka planda üç ana fazdan oluşan bir zaman çizelgesini tetikler. Kötü bir INP skoru, bu fazlardan birinde veya birkaçında bir darboğaz olduğu anlamına gelir. INP, bu üç fazın toplam süresidir.

Bir etkileşimin yaşam döngüsü:

Kullanıcı Tıklar -> [FAZ 1: Girdi Gecikmesi] -> Olay İşleyiciler Başlar -> [FAZ 2: İşlem Süresi] -> Olay İşleyiciler Biter -> [FAZ 3: Sunum Gecikmesi] -> Bir Sonraki Kare Boyanır

Faz 1: Girdi Gecikmesi (Input Delay)

Bu, kullanıcının bir butona tıklaması, bir ekrana dokunması veya bir tuşa basması ile bu eyleme karşılık gelen JavaScript kodlarının (olay işleyicileri - event handlers) çalışmaya başlaması arasında geçen süredir.

Neden Olur? Girdi gecikmesinin neredeyse tek bir suçlusu vardır: meşgul bir ana iş parçacığı (main thread). Tarayıcının ana iş parçacığı, JavaScript'i yürüten, kullanıcı arayüzünü güncelleyen ve kullanıcı girdilerini işleyen tek bir çalışandır. Eğer bu "çalışan", siz butona tıkladığınız anda, büyük bir JavaScript dosyasını ayrıştırmak, karmaşık bir animasyonu hesaplamak veya uzun bir döngüyü çalıştırmak gibi başka bir "uzun görev" (Long Task) ile meşgulse, sizin tıklamanızı fark edip ilgili kodu çalıştırmaya başlaması gecikir. Kullanıcı için bu, "tıkladım ama hiçbir şey olmuyor" hissini yaratan o sinir bozucu donma anıdır.

Somut İstatistik: Google'ın web.dev platformunda paylaşılan verilere göre, bir sayfanın toplam engelleme süresinin (Total Blocking Time - TBT) %90'ından fazlası, 50 milisaniyeden uzun süren görevlerden, yani Uzun Görevler'den (Long Tasks) kaynaklanmaktadır. Bu durum, girdi gecikmesinin ne kadar yaygın bir sorun olduğunu kanıtlar niteliktedir.

Faz 2: İşlem Süresi (Processing Time)

Girdi gecikmesi sona erdiğinde ve tarayıcı nihayet olay işleyici kodunuzu (örneğin, click olayına bağlı fonksiyonunuzu) çalıştırmaya başladığında, bu faz başlar. İşlem süresi, bu kodun tamamen çalışıp bitmesi için geçen toplam süredir.

Neden Olur? Bu fazdaki gecikmeler tamamen sizin yazdığınız veya kullandığınız JavaScript kodunun verimliliği ile ilgilidir.

  • Karmaşık Hesaplamalar: Bir filtreleme mantığının yüzlerce ürünü anında yeniden sıralaması ve filtrelemesi.
  • Verimsiz Kod: Gereksiz yere DOM'a tekrar tekrar erişen, optimize edilmemiş döngüler içeren kodlar.
  • Yoğun Veri İşleme: Bir kullanıcının girdiği veriyi alıp istemci tarafında karmaşık bir şekilde işleyen kod blokları.

Eğer kodunuz şişkin ve yavaşsa, işlem süresi uzar ve bu da doğrudan INP skorunuza eklenir.

Faz 3: Sunum Gecikmesi (Presentation Delay)

JavaScript kodunuz işini bitirdi. Artık tarayıcının, bu işlemin sonucunu ekranda görsel olarak yansıtması gerekiyor. Bu, bir menünün açılması, bir ürünün sepete eklendiğini belirten bir bildirimin gösterilmesi veya bir düğmenin renginin değişmesi olabilir. Sunum gecikmesi, işlem bittikten sonra tarayıcının bu görsel değişikliği içeren bir sonraki kareyi ekrana "boyaması" (paint) için geçen süredir.

Neden Olur?

  • Büyük ve Karmaşık DOM: Sayfanızın HTML yapısı (DOM ağacı) ne kadar büyük ve iç içe geçmişse, tarayıcının küçük bir değişikliğin bile sayfanın genel düzenini nasıl etkileyeceğini hesaplaması (layout) ve yeniden çizmesi (repaint) o kadar uzun sürer.
  • Ağır CSS Efektleri: Karmaşık box-shadow, filter veya transform gibi CSS özellikleri, tarayıcının boyama işlemleri için daha fazla kaynak harcamasına neden olabilir.
  • Görsel Güncelleme Sayısı: Eğer JavaScript kodunuz tek bir etkileşimde birden çok görsel güncellemeyi tetikliyorsa, her biri sunum gecikmesine katkıda bulunabilir.

Özetle, INP = Girdi Gecikmesi + İşlem Süresi + Sunum Gecikmesi'dir. Bu zincirin herhangi bir halkasındaki zayıflık, tüm etkileşim deneyimini yavaşlatır ve INP skorunuzu yükseltir. Başarılı bir optimizasyon, bu üç fazın her birini hedef alan stratejiler gerektirir.

INP Optimizasyon Oyun Kitabı: Teşhisten Tedaviye

INP'yi iyileştirmek, karanlıkta ateş etmeye benzemez. Bilimsel bir süreçtir: önce sorunun kaynağını (suçluları) hassas araçlarla tespit eder, sonra doğru tedavi yöntemlerini uygularsınız. Bu süreci iki ana başlık altında inceleyeceğiz: Teşhis ve Tedavi.

A) Suçluları Bulma (Teşhis)

Optimizasyona başlamadan önce hangi etkileşimlerin yavaş olduğunu ve neden yavaş olduklarını bilmeniz gerekir. Bunun için hem gerçek kullanıcı verilerini hem de kontrollü test ortamı verilerini kullanmalıyız.

Saha Verisi (Field Data) ve Laboratuvar Verisi (Lab Data): Neden Farklılar?

  • Saha Verisi (RUM - Real User Monitoring): Bu, sitenizi ziyaret eden gerçek kullanıcıların deneyimlerinden toplanan veridir. Google Search Console ve PageSpeed Insights'ın "Gerçek kullanıcılarınızın deneyimleri" bölümü bu veriyi kullanır. Bu veriler, farklı cihazlar, ağ koşulları ve coğrafi konumlardaki kullanıcıların yaşadığı gerçek dünya performansını yansıttığı için Core Web Vitals için asıl önemli olan ve Google'ın sıralama faktörü olarak dikkate aldığı veri budur.
  • Laboratuvar Verisi (Synthetic): Bu, belirli bir cihaz ve ağ hızında, kontrollü bir ortamda yapılan testlerin sonucudur. Chrome DevTools ve Lighthouse bu tür veriler üretir. Sorunları yeniden oluşturmak ve hata ayıklamak için paha biçilmezdir, ancak gerçek dünya çeşitliliğini yansıtmaz.

Strateji: Saha verisiyle "nerede" sorun olduğunu (hangi URL gruplarının zayıf olduğunu) bulun, ardından laboratuvar araçlarıyla o sayfalarda "neden" sorun olduğunu (hangi JavaScript görevinin veya DOM elemanının soruna yol açtığını) keşfedin.

Kullanılacak Araçlar:

  • Google Search Console (GSC): Teşhis sürecinizin başlangıç noktasıdır.
    Nasıl Kullanılır: GSC'de Önemli Web Verileri (Core Web Vitals) raporuna gidin. Mobil ve Masaüstü sekmelerini kontrol edin. Burada Google, INP metiği "Zayıf" veya "İyileştirme Gerekiyor" olarak işaretlenmiş URL gruplarını size sunar. "Zayıf URL'ler" listesine tıklayarak hangi sayfa şablonlarınızın (örneğin, /urun-detay/ veya /blog/) en çok etkilendiğini görebilirsiniz. Bu, çabalarınızı nereye odaklamanız gerektiğini gösteren bir yol haritasıdır.
  • PageSpeed Insights (PSI): GSC'de sorunlu bir URL grubu tespit ettikten sonra, o gruptan temsili bir URL'yi analiz etmek için en iyi araçtır.
    Nasıl Kullanılır: URL'yi PSI'a girin. Raporun en üstündeki "Gerçek kullanıcılarınızın deneyimleri" (Saha Verisi) bölümü, sitenizin son 28 günlük INP skorunu size doğrudan söyler. "Performans sorunlarını teşhis et" (Laboratuvar Verisi) bölümüne indiğinizde ise Lighthouse, sayfanızı yüklerken ana iş parçacığını en çok meşgul eden JavaScript dosyalarını ve "Uzun ana iş parçacığı görevlerinden kaçının" uyarısı altında potansiyel "Uzun Görevleri" listeler. Bu size "suçlu" JavaScript dosyaları hakkında ilk ipuçlarını verir.
  • Chrome DevTools (İleri Düzey Analiz): Sorunun kaynağını tam olarak belirlemek için en güçlü aracınızdır.
    Nasıl Kullanılır: Sorunlu sayfada F12 tuşuyla veya sağ tıklayıp "İncele" diyerek DevTools'u açın. Performance paneline gidin.
    Profil Kaydetme: Kayıt düğmesine (⚫) basın. Ardından, sayfada yavaş olduğunu bildiğiniz etkileşimi gerçekleştirin (örneğin, bir filtreye tıklayın, bir menüyü açın). Etkileşim bittikten sonra kaydı durdurun.
    Analiz: Performans zaman çizelgesinde Interactions (Etkileşimler) adında yeni bir satır göreceksiniz. INP eşiğini (200ms) aşan etkileşimler burada listelenir. Bu etkileşimlerden birine tıkladığınızda, zaman çizelgesi o etkileşime odaklanır. Main (Ana İş Parçacığı) satırında, sağ üst köşesinde kırmızı bir üçgen olan uzun, kırmızı bloklar göreceksiniz. Bunlar, etkileşim sırasında çalışan Uzun Görevler'dir (Long Tasks). Bu göreve tıkladığınızda, aşağıdaki "Bottom-Up" veya "Call Tree" sekmeleri, tam olarak hangi JavaScript fonksiyonunun bu gecikmeye neden olduğunu size gösterir. Artık suçlunun adını ve adresini biliyorsunuz.

B) Tedaviler (Optimizasyon Teknikleri)

Suçluyu teşhis ettikten sonra sıra tedaviye geldi. Çözümleri, bir etkileşimin üç ana fazına göre kategorize ederek uygulayacağız.

1. Girdi Gecikmesini İyileştirme (Ana İş Parçacığını Rahatlatma)

Temel Sorun: Ana iş parçacığı (main thread), kullanıcı etkileşimine yanıt veremeyecek kadar uzun süre başka bir işle meşgul.
Çözüm: Uzun görevleri daha küçük, yönetilebilir parçalara bölerek ana iş parçacığına nefes alması ve kullanıcı girdilerine yanıt vermesi için fırsat tanımak.

Teknik: Uzun Görevleri Bölme (Yielding to the Main Thread)
Imagine edin ki, 250 milisaniye süren devasa bir JavaScript fonksiyonunuz var. Bu fonksiyon çalışırken, kullanıcı arayüzü tamamen donar. Bu görevi, her biri 50ms'den daha kısa süren 5 küçük parçaya bölebiliriz. Her parçadan sonra kontrolü kısa bir süreliğine tarayıcıya geri veririz (yield). Bu kısa molalarda tarayıcı, bekleyen kullanıcı etkileşimlerine yanıt verebilir.

  • setTimeout ile Bölme (Klasik Yöntem): Uzun görevinizi parçalara ayırıp her bir parçayı setTimeout(..., 0) içine sarmak, tarayıcıya bir sonraki göreve geçmeden önce araya girme şansı tanır. Bu, uzun süredir kullanılan bir tekniktir ancak görev önceliklendirme imkanı sunmaz.
  • scheduler.postTask() ile Bölme (Modern ve Önerilen Yöntem): Bu modern API, görev bölme işlemi için çok daha fazla kontrol sunar. Görevleri farklı önceliklerde ('user-blocking', 'user-visible', 'background') planlamanıza olanak tanır. Örneğin, kullanıcının doğrudan gördüğü bir animasyon güncellemesini en yüksek öncelikle, arka planda veri gönderme gibi bir işi ise en düşük öncelikle çalıştırabilirsiniz. Bu, en kritik işlerin önce yapılmasını garanti altına alır. Konuyla ilgili daha fazla teknik detaya Mozilla Developer Network (MDN) üzerinden ulaşabilirsiniz ki bu kaynak, geliştiriciler için otorite kabul edilir.

Hikayeleştirme: Görev Bölme Senaryosu
Bir seyahat sitesinde, kullanıcı bir destinasyon seçtiğinde, ilgili otelleri, uçuşları ve turları tek bir devasa fonksiyonda getiren bir yapı var. Bu fetchAllData() fonksiyonu 400ms sürüyor ve bu sırada arayüz donuyor. Bu görevi bölerek:

  • fetchHotels() (Yüksek öncelik, user-visible)
  • fetchFlights() (Orta öncelik)
  • fetchTours() (Düşük öncelik, background)

şeklinde scheduler.postTask() ile planlayabiliriz. Böylece, kullanıcı için en önemli olan otel bilgileri ekranda hızla belirirken, diğer veriler arka planda ana iş parçacığını tıkamadan yüklenir.

2. İşlem Süresini İyileştirme (Kodunuzu Optimize Etme)

Temel Sorun: Olay işleyicilerinizi (event handlers) çalıştıran JavaScript kodunun kendisi yavaş ve verimsiz.
Çözüm: Daha az kod çalıştırmak ve çalışan kodun daha hızlı olmasını sağlamak.

Teknik: Kod Bölme (Code-splitting)
Bir kullanıcının, sitenizdeki tüm özelliklerin JavaScript kodunu sayfa ilk yüklendiğinde indirmesine gerek yoktur. Kod bölme, JavaScript paketlerinizi (bundles) daha küçük parçalara ayırarak sadece o an veya o sayfa için gerekli olan kodu yükleme stratejisidir. Örneğin, bir video oynatıcının kodu, kullanıcı oynat butonuna tıklayana kadar yüklenmemelidir. Webpack, Rollup, Vite gibi modern JavaScript paketleyicileri (bundlers) bunu dinamik import() sözdizimi ile kolayca yapmanızı sağlar.

Teknik: Olay İşleyicilerini Kısa ve Öz Tutma
Bir click veya input olayına bağladığınız fonksiyonlar olabildiğince hızlı çalışmalıdır. Eğer bir olay işleyici karmaşık bir mantık içeriyorsa, bu mantığın sadece görsel güncellemeyi hemen yapan kısmını senkron olarak çalıştırın. Geri kalan yoğun hesaplamaları ise setTimeout veya scheduler.postTask() gibi bir yöntemle erteleyin (asenkron hale getirin).

Teknik: Layout Thrashing'den Kaçınma (İleri Düzey)
"Layout Thrashing", JavaScript'in tarayıcıyı verimsiz çalışmaya zorladığı bir durumdur. Bir döngü içinde sürekli olarak DOM'dan bir değer okuyup (örneğin, bir elementin genişliğini element.offsetWidth) hemen ardından DOM'a bir stil yazarsanız (örneğin, başka bir elementin genişliğini ayarlarsanız), tarayıcı her döngü adımında sayfa düzenini yeniden hesaplamak zorunda kalır. Bu, işlem süresini feci şekilde artırır.

Çözüm: DOM okumalarınızı ve yazmalarınızı gruplayın. Önce döngü içinde gerekli tüm değerleri okuyup bir değişkene atayın. Döngü bittikten sonra, topladığınız bu değerlerle tüm DOM yazma işlemlerini tek seferde yapın.

3. Sunum Gecikmesini İyileştirme (Render'ı Hızlandırma)

Temel Sorun: JavaScript işini bitirdikten sonra, tarayıcının sonucu ekrana çizmesi çok uzun sürüyor.
Çözüm: Tarayıcının yapması gereken boyama ve düzen hesaplama işini azaltmak.

Teknik: DOM Ağacını Küçük ve Basit Tutma
Bir elementin stilini değiştirdiğinizde, tarayıcı bu değişikliğin diğer elementleri nasıl etkilediğini hesaplamak zorundadır. DOM ağacınız ne kadar büyük ve karmaşıksa (örneğin, 1500'den fazla element), bu hesaplama o kadar uzun sürer. Mümkün olduğunca az HTML elementi kullanın ve gereksiz <div> sarmalayıcılardan kaçının. Bu sadece INP'ye değil, genel sayfa performansına da büyük katkı sağlar. Bir Forrester Consulting araştırmasına göre, sayfa yükleme süresindeki sadece bir saniyelik bir gecikme bile dönüşüm oranlarını %7'ye kadar düşürebilmektedir. Bu, DOM basitliğinin ticari etkisini açıkça göstermektedir.

Teknik: content-visibility CSS Özelliğini Kullanma
Bu güçlü CSS özelliği, tarayıcıya bir elementin o an ekran dışında olup olmadığını ve render işleminin atlanıp atlanamayacağını söyler. Özellikle çok uzun makaleler, sonsuz kaydırma listeleri veya ürün yorumları gibi sayfanın alt kısımlarında kalan içerikler için content-visibility: auto; kullanmak, sayfanın ilk render süresini ve etkileşimlere yanıt verme hızını önemli ölçüde iyileştirebilir. Tarayıcı, kullanıcı o bölüme yaklaştığında içeriği render etmeye başlar, böylece başlangıçtaki iş yükü azalır.

Bu seviyedeki derinlemesine optimizasyonlar, hem uzmanlık hem de özel araçlar gerektirir. Özellikle büyük ve dinamik platformlarda, ana iş parçacığını (main thread) sürekli olarak izlemek ve verimli tutmak tam zamanlı bir iştir. Bu tür özel yazılım ihtiyaçları ve performans mühendisliği için Solviera Teknoloji'nin terzi işi çözümleri, işletmelere bu karmaşıklığı yönetme ve sürekli hızlı bir kullanıcı deneyimi sunma konusunda esneklik ve güç kazandırır. Bu, sadece bir sorunu çözmek değil, aynı zamanda gelecekteki performans sorunlarını önleyecek sağlam bir temel oluşturmaktır.

INP Optimizasyon Vaka Analizi: Solviera Nasıl Çözdü?

Teoriyi pratiğe dökmek, uzmanlığın en net göstergesidir. Yakın zamanda karşılaştığımız bir durumu paylaşmak isterim. Büyük bir e-ticaret müşterimizin ürün listeleme sayfasında, kullanıcıların ürünleri özelliklerine göre filtrelediği gelişmiş bir panel bulunuyordu.

Gözlemlediğimiz sorun: Kullanıcı, filtre panelindeki herhangi bir onay kutusuna (checkbox) tıkladığında, sayfanın tepki vermesi ve ürün listesini güncellemesi kabul edilemez derecede yavaştı. PageSpeed Insights üzerinden yaptığımız saha verisi analizinde, bu etkileşimlerin ortalama 450ms gibi yüksek bir INP skoruna neden olduğunu gördük. Bu, Google Search Console'da ilgili URL'lerin "zayıf" olarak işaretlenmesine yol açmıştı.

Teşhis sürecimiz: Chrome DevTools'un Performans panelini kullanarak bu etkileşimi profilledik. Analizimiz, her bir tıklamanın, yüzlerce ürünü ve onlarca filtre seçeneğini yeniden değerlendiren, yaklaşık 400ms süren tek bir "uzun görev" (long task) tetiklediğini net bir şekilde gösterdi. Sorun, tüm filtreleme, sıralama ve arayüz güncelleme mantığının tek bir senkronize blok halinde çalışmasıydı.

Uyguladığımız tedavi: Bu monolitik görevi, scheduler.postTask() API'sini kullanarak mantıksal ve öncelikli parçalara ayırdık:

  1. Parça 1 (Yüksek Öncelik - user-blocking): Tıklanan onay kutusunun arayüzünü anında güncelle ve bir "yükleniyor" göstergesi çıkar. (Süre: ~10ms)
  2. Parça 2 (Orta Öncelik - user-visible): Filtrelenmiş ürün listesini arka planda hesapla. (Süre: ~350ms, ancak ana iş parçacığını tıkamadan)
  3. Parça 3 (Yüksek Öncelik - user-blocking): Hesaplama bitince, yeni ürün listesini DOM'a yansıt ve "yükleniyor" göstergesini kaldır. (Süre: ~30ms)

Sonuç: Bu basit ama etkili optimizasyon, kullanıcının tıklamasına anında görsel bir geri bildirim verilmesini sağladı. Uzun süren hesaplama işlemi ise ana iş parçacığını tıkamadan arka planda gerçekleşti. Bu değişikliğin ardından, sayfanın INP skorunu ortalama 75ms'ye düşürerek kullanıcı deneyiminde hissedilir bir akıcılık sağladık. Daha da önemlisi, müşterimizin Search Console'daki "zayıf URL" uyarısı bir hafta içinde tamamen ortadan kalktı. Bu, doğru teşhis ve modern optimizasyon tekniklerinin ne kadar güçlü sonuçlar doğurabileceğinin canlı bir kanıtıdır.

Sonuç

Tepkisellik Bir Sürat Koşusu Değil, Bir Maratondur

INP'nin Core Web Vitals ailesine katılması, web performansı anlayışımızda bir dönüm noktasıdır. Artık sadece hızlı açılan değil, tüm kullanım süresi boyunca akıcı, tutarlı ve keyifli bir deneyim sunan web siteleri oluşturma zorunluluğumuz var. INP, etkileşim kalitesini ölçmek için daha kullanıcı merkezli, daha bütünsel ve nihayetinde daha doğru bir yol sunuyor.

Bu rehberde de detaylandırdığımız gibi, INP için optimizasyon tek seferlik bir düzeltme değildir. Bu, verimli kod yazma, ana iş parçacığının değerli bir kaynak olduğunu kabul etme ve yaptığınız her değişikliğin kullanıcı etkileşimine etkisini düşünme alışkanlığıdır. Bu bir kültür değişimidir.

INP'de ustalaşmak; bir kullanıcının sitenizdeki menüye tıklamasından, bir formu doldurmasına, bir ürünü sepete eklemesine kadar tüm yolculuğu boyunca tutarlı bir şekilde hızlı, akıcı ve duyarlı hissettiren dijital deneyimler yaratmak anlamına gelir. Ve bu, hem kullanıcı sadakatinin hem de dijital başarının temelini oluşturan, her harika web deneyiminin nihai hedefidir.

Sıkça Sorulan Sorular

INP, Mart 2024 itibarıyla Google'ın Core Web Vitals (Önemli Web Verileri) metriklerinden biri haline gelmiştir. Core Web Vitals, Google'ın sayfa deneyimi sinyallerinin bir parçasıdır ve doğrudan arama sıralamalarını etkileyen bir faktördür. Zayıf bir INP skoru, Google'a sitenizin kötü bir kullanıcı deneyimi sunduğunu işaret eder ve bu da arama sonuçlarındaki görünürlüğünüzü olumsuz etkileyebilir. İyi bir INP skoru ise hem kullanıcı memnuniyetini artırır hem de SEO performansınıza pozitif katkı sağlar.

En güvenilir veri her zaman saha verisidir (field data) çünkü gerçek kullanıcı deneyimlerini yansıtır. Bu veriye ulaşmak için birincil aracınız Google Search Console'daki Önemli Web Verileri raporu olmalıdır. Bu rapor, sitenizdeki hangi URL gruplarının INP sorunları yaşadığını size toplu olarak gösterir. Tekil bir URL'yi analiz etmek ve hem saha hem de laboratuvar verisini bir arada görmek için PageSpeed Insights en iyi seçenektir. Sorunun kök nedenini bulmak ve teknik hata ayıklama yapmak için ise Chrome DevTools Performance Paneli vazgeçilmezdir.

Üçüncü taraf script'ler, INP için en büyük risk faktörlerinden biridir. Bu script'ler, sizin kontrolünüz dışında ana iş parçacığında uzun süre çalışarak "Uzun Görevler" oluşturabilir ve bu da doğrudan girdi gecikmesine (input delay) neden olur. Bir chatbot script'i veya bir reklam script'i, kullanıcı sizin butonunuza tıkladığı anda çalışıyorsa, sitenizin yanıt vermesini engelleyebilir. Çözüm olarak, kritik olmayan üçüncü taraf script'leri async veya defer nitelikleriyle yüklemek, gerçekten ihtiyaç duyulana kadar (örneğin kullanıcı bir chatbot ikonuna tıklayana kadar) yüklememek veya daha performanslı alternatiflerini araştırmak gerekir.

Evet, kesinlikle geçerlidirler ancak kullanım alanları farklıdır. requestAnimationFrame (rAF), özellikle animasyonlar gibi doğrudan bir sonraki karede yapılması gereken görsel güncellemeler için tasarlanmıştır. Sunum gecikmesini azaltmada faydalı olabilir. requestIdleCallback, tarayıcının tamamen boşta olduğu anları kullanarak düşük öncelikli arka plan görevlerini çalıştırmak için kullanılır. Ancak, tarayıcı sürekli meşgulse hiçbir zaman çalışmama riski taşır. Yeni scheduler.postTask() API'si, bu iki yöntemin eksikliklerini gidererek görevleri önceliklendirme imkanı sunduğu için INP optimizasyonunda genellikle daha esnek ve güvenilir bir çözüm olarak kabul edilmektedir.

INP büyük ölçüde JavaScript'in neden olduğu girdi gecikmesi ve işlem süresi ile ilgili olsa da, CSS'in de özellikle sunum gecikmesi (presentation delay) üzerinde önemli bir rolü vardır. Çok karmaşık CSS seçiciler, box-shadow, filter gibi render maliyeti yüksek özellikler veya DOM boyutu büyüdüğünde sayfa düzenini yeniden hesaplamayı gerektiren stil değişiklikleri sunum süresini uzatabilir. DOM ağacını basit tutmak ve content-visibility gibi modern CSS özelliklerini kullanmak, JavaScript optimizasyonlarınızı tamamlayarak INP skorunuzu iyileştirmeye yardımcı olur.

İşletmenizi Bir Sonraki Seviyeye Taşımaya Hazır Mısınız?

Solviera'nın bütünsel teknoloji çözümleri hakkında daha fazla bilgi almak ve işletmenize özel bir analiz için proje danışmanlarımızla bugün iletişime geçin!

Hemen İletişime Geçin