Core/Dash Boyutu: Gezinme Türü
bfcache, prerender ve reload performansında hata ayıklamak için Core Web Vitals verilerinizi kullanıcıların sayfaya nasıl ulaştığına göre bölümlere ayırın.
Boyut: Gezinme Türü (nt)
CrUX verilerinizdeki her sayfa görüntülemesi bir gezinme türü (navigation type) barındırır. Bu, tarayıcının sayfayı nasıl yüklediğini söyler ve hangi tarayıcı sistemlerinin dahil olduğunu belirler: ağ yığını (network stack), back/forward cache, prerender ardışık düzeni (pipeline) veya oturum geri yükleme (session restore). CoreDash, Core Web Vitals metriklerini her bir gezinme bağlamında ayrı ayrı filtreleyip karşılaştırabilmeniz için bunu nt boyutu olarak sunar.
Bu veriler PerformanceNavigationTiming API'sinden, özellikle de type özelliğinden gelir. Bunu performance.getEntriesByType("navigation")[0].type ile okuyabilirsiniz. Chrome, bu değeri CrUX'a gönderilen her web vitals ölçümünün yanında raporlar. CoreDash de herhangi bir özel izleme (instrumentation) yazmanıza gerek kalmadan segmentlere ayırabilmeniz için bunu depolar ve indeksler.

Gezinme Türü Neden Önemlidir?
LCP veya INP metriklerini tüm gezinme türlerinde birleştirmek, teknik olarak doğru ancak pratikte yanıltıcı bir sayı üretir. Bir back/forward cache eşleşmesi milisaniyeler içinde tamamlanır. Soğuk bir gezinme (cold navigate) ise DNS, TCP, TLS ve TTFB için bekler. Oturumlarınızın %20'si bfcache eşleşmesiyse, bunlar p75 LCP değerinizi aşağı çeker ve yeni (fresh) gezinmelerdeki gerçek bir sorunu görmeyi zorlaştırır.
Bunun tersi de geçerlidir. Sitenizde bfcache bozuksa, back/forward oturumları yeni gezinmeler kadar kötü performans gösterecektir. Gezinme türüne göre segmentasyon yapmazsanız, genel ortalama sabit kalacağı için bunu asla fark edemezsiniz.
Prerender en dramatik durumdur. Doğru bir şekilde prerender edilmiş bir sayfa sıfıra yakın bir LCP göstermelidir, çünkü kullanıcı bağlantıya tıklamadan önce oluşturma (rendering) işlemi bitmiştir. Eğer prerender edilmiş sayfalarınız normal LCP rakamları gösteriyorsa, Speculation Rules yapılandırması yanlıştır ve prerender ya tetiklenmiyordur ya da kullanılmadan önce iptal ediliyordur.
Gezinme Türleri
navigate
Standart bir gezinme: kullanıcı bir URL yazdı, başka bir siteden bir bağlantıya tıkladı veya bir yönlendirmeyi izledi. Bu, hiçbir önbelleğe alma (caching) kısayolu olmayan tam bir sayfa yüklemesidir. Tarayıcı; DNS araması, bağlantı kurma ve tam kaynak yükleme dâhil olmak üzere eksiksiz istek ardışık düzeninden (pipeline) geçer. CoreDash verilerinde, navigate oturumların yaklaşık %65'ini oluşturur. Bu sizin temel çizginizdir (baseline). Diğer her gezinme türü, navigate ile nasıl karşılaştırıldığına göre değerlendirilmelidir.
reload
Kullanıcı F5'e bastı, tarayıcının yeniden yükle düğmesine tıkladı veya kodunuz location.reload() çağırdı. Tarayıcı önbelleğe alınmış kaynaklar için yeniden doğrulama (revalidation) istekleri gönderir, bu da kullanıcının aynı sayfada olmasına rağmen TTFB'nin genellikle navigate işleminden daha kötü görünmesi anlamına gelir. Eğer reload TTFB değeriniz navigate TTFB değerinden belirgin şekilde yüksekse, cache başlıklarınız (headers) eski (stale) içeriği sunmak yerine her yeniden yüklemede yeniden doğrulamayı tetikliyordur. Tipik CoreDash trafiğinde oturumların yaklaşık %10'u reload işlemlerinden oluşur.
back_forward
Kullanıcı tarayıcının geri veya ileri düğmesine bastı. Eğer back/forward cache (bfcache) çalışıyorsa, bu olası en hızlı gezinme türüdür. Tarayıcı sayfayı hiçbir ağ isteği yapmadan bellekten geri yükler. Bir bfcache eşleşmesi için LCP, neredeyse anlık olan bellekten boyama süresine eşittir.
Eğer back_forward metrikleriniz navigate ile benzer görünüyorsa, bfcache çalışmıyor demektir. En yaygın nedenler unload olay işleyicileri (event handlers), Cache-Control: no-store yanıt başlıkları ve gezinmeden önce kapatılmamış açık IndexedDB bağlantılarıdır. CoreDash verileri back/forward oturumlarını %20 civarında gösterir, bu da bunu yüksek etkiye sahip bir düzeltme haline getirir.
prerender
Sayfa, kullanıcı bağlantıya tıklamadan önce Speculation Rules API kullanılarak arka planda yüklendi. Kullanıcı tıkladığında, prerender edilmiş belge anında etkinleştirilir. Doğru bir şekilde etkinleştirilmiş prerender için LCP sıfıra yakındır çünkü tüm oluşturma (rendering) işi gezinme olayından önce bitmiştir.
Eğer prerender LCP değeriniz normal görünüyorsa şu üç şeyden biri olmuştur: prerender etkinleştirmeden önce atılmıştır (discarded), speculation rule yanlış URL'leri hedeflemiştir veya sayfa prerendering'i engelleyen başlıklar ya da JavaScript kullanıyordur. CoreDash oturumlarının yaklaşık %3'ü prerender aktivasyonlarıdır, ancak Speculation Rules dağıtıldığında bu pay hızla artar.
restore
Tarayıcı kapatıldıktan veya sekme çöktükten sonra sekme geri yüklendi. Tarayıcı sayfayı baştan yükler, ancak oturum yeni bir (fresh) gezinme yerine geri yükleme (restore) olarak kabul edilir. Performans soğuk bir gezinmeye (cold navigate) benzer. Bu, oturumların yaklaşık %2'sini oluşturur ve nadiren optimizasyon çalışmalarının odak noktası olur, ancak kararsız tarayıcı oturumlarında (unstable browser sessions) kullanıcılarınız varsa izlemeye değerdir.
Hata Ayıklama İş Akışı
- navigate LCP'sini genel LCP hedefinizle karşılaştırın. Yeni yükleme performansı için temel gerçeğiniz (ground truth) budur. Eğer navigate zaten geçiyorsa, sorununuz başka bir yerdedir.
- back_forward'ı navigate ile karşılaştırarak kontrol edin. Eğer birbirlerine yakınlarsa, bfcache bozuktur. Chrome DevTools'u açın, Application paneline gidin ve bfcache testini çalıştırın. DevTools çıktısı tam olarak hangi özelliklerin veya başlıkların bfcache uygunluğunu engellediğini listeleyecektir.
- prerender LCP'sini kontrol edin. Eğer 200ms'nin üzerindeyse, prerender ardışık düzeni işlevini yerine getirmiyordur. Speculation Rules JSON'unuzun geçerli olduğunu doğrulayın, hedef sayfaların engelleyici (blocking) bir mantık döndürmediğini kontrol edin ve Speculation Rules altındaki Chrome DevTools'da aktivasyonların sayıldığını onaylayın.
Mühendislik Temel Kuralları
- navigate: Normal optimizasyonlarla LCP eşiğinizi karşılamalıdır: hızlı TTFB, LCP görselinde fetchpriority="high", render-blocking (oluşturmayı engelleyen) kaynakların olmaması.
- back_forward: navigate'ten 10 ile 20 kat daha hızlı olmalıdır. Aksi halde bfcache bozuktur.
- prerender: 200ms'nin altında bir LCP göstermelidir. Aksi takdirde Speculation Rules yanlış yapılandırılmıştır.
- reload: TTFB, navigate'ten belirgin şekilde daha kötü olmamalıdır. Eğer öyleyse, cache yeniden doğrulama (revalidation) başlıklarınızı düzeltin.
Gezinme Türü, "sayfam nasıl performans gösteriyor?" sorusu ile "sayfam her bir tarayıcı yükleme stratejisi altında nasıl performans gösteriyor?" sorusunu ayıran boyuttur. Bu ayrım, tahmin yürütmekle hata ayıklamak arasındaki farktır.