_cb (Cache Buster) Parametresi Analizi

Login sonrası URL'e eklenen ?_cb=1771814576 parametresinin araştırması

Basit Anlatım (Herkes İçin)

Kullanıcı siteye giriş yaptığında, tarayıcı (Chrome, Safari vs.) daha önce ziyaret ettiği sayfaları hafızasında tutar. Bu "önbellek" (cache) sayesinde sayfa daha hızlı yüklenir ama sorun şu: Tarayıcı hafızadaki eski sayfayı gösterir ve kullanıcı giriş yapmış gibi görünmez.

_cb=1771814576 parametresi URL'in sonuna eklenen bir "zaman damgası"dır. Her giriş yapıldığında farklı bir sayı eklenir, böylece tarayıcı bu URL'i "daha önce görmediğim yeni bir sayfa" olarak algılar ve hafızadaki eskisini kullanmak yerine sunucudan taze içeriği çeker.

Neden önemli? Bu parametre olmazsa, giriş yaptıktan sonra hâlâ "Giriş Yap" butonu görünebilir veya kullanıcıya özel içerikler (favoriler, playlist vb.) yüklenmeyebilir.

Teknik Detaylar (Geliştiriciler İçin)

1. Nerede Ekleniyor?

// AuthenticatedSessionController.php:179-181
$cacheBuster = '_cb=' . time();
$intendedUrl .= (str_contains($intendedUrl, '?') ? '&' : '?') . $cacheBuster;

store() metodu: Login form submit edildiğinde, redirect URL'ine _cb=time() ekleniyor.

2. Login Akışı

1 Kullanıcı login form'u submit eder
2 authenticate() + session regenerate
3 ResponseCache::clear() - sunucu taraflı cache temizlenir
4 ?_cb=time() eklenir (tarayıcı cache bypass)
5 redirect() + no-cache/no-store header'ları
6 Tarayıcı yeni URL'i taze olarak yükler

3. Sistemdeki Cache Koruma Katmanları

_cb tek başına değil, çok katmanlı bir cache stratejisinin parçası:

KATMAN 1 TenantCacheProfile

Auth kullanıcılar icin shouldCacheRequest() her zaman false doner. Sunucu tarafinda auth sayfalar asla cache'lenmez.

TenantCacheProfile.php:112
KATMAN 2 Cache Bypass Params

TenantCacheProfile'da ['_', 'lang_changed', 'cb', 'no_cache'] parametreleri cache'i bypass eder.

TenantCacheProfile.php:148
KATMAN 3 HTTP Header'ları

Login redirect'inde no-cache, no-store, must-revalidate header'ları gönderilir. Tarayıcıya "bu sayfayı saklama" der.

AuthenticatedSessionController.php:193
KATMAN 4 _cb Parametresi

URL'e ?_cb=timestamp eklenir. Tarayıcının URL-based cache mekanizmasını bypass eder. En son savunma hattı.

AuthenticatedSessionController.php:180
KATMAN 5 ResponseCache::clear()

Login sırasında Spatie ResponseCache tamamen temizlenir. Guest cache'lerin auth sonrası gösterilmesini engeller.

AuthenticatedSessionController.php:147
KATMAN 6 FixResponseCacheHeaders

Middleware: Auth kullanıcılar icin dinamik sayfalara (favorites, playlists, dashboard) no-cache, private header koyar.

FixResponseCacheHeaders.php:59

4. Dikkat: _cb vs cb Farkı

Potansiyel Uyumsuzluk Tespit Edildi

AuthenticatedSessionController _cb parametresi ekliyor (alt tire ile)
TenantCacheProfile bypass listesi cb parametresini tanıyor (alt tiresiz)

Sonuç: _cb parametresi TenantCacheProfile'ın bypass listesinde yok. Ancak bu pratikte sorun yaratmıyor çünkü auth kullanıcılar zaten Katman 1'de (auth()->check()) cache'den hariç tutuluyor.

Yine de tutarlılık için _cb'yi bypass listesine eklemek veya parametre adını cb yapmak düşünülebilir.

5. Parametre Değeri Analizi

Parametre _cb
Değer 1771814576 = time() (Unix timestamp)
Tarih Karşılığı 23 Şubat 2026 (login anı)
Sunucu tarafında kullanılıyor mu? Hayır - Hiçbir controller veya middleware bu değeri okumuyor
Tek amacı Tarayıcının URL-based cache'ini kırmak (her login'de farklı URL oluşturmak)

6. İlgili Dosyalar

app/Http/Controllers/Auth/AuthenticatedSessionController.php :180 _cb ekleme
app/Services/TenantCacheProfile.php :148 bypass listesi
app/Http/Middleware/FixResponseCacheHeaders.php :59 auth header'lar

Sonuç

23 Şubat 2026 • Muzibu.com.tr