Yayınlanma tarihi: 21 Ekim 2024, Son güncelleme tarihi: 9 Eylül 2025
Chrome, Cache-Control: no-store
kullanan sayfalar için geri/ileri önbellek (bfcache) kullanımına izin verecek bir değişiklik yapıyor. Bu değişikliğin geliştiriciler için ne anlama geldiğini öğrenin.
Arka plan
Cache-Control: no-store
, HTTP başlığı olarak ayarlandığında sayfanın HTTP önbelleğinde depolanmaması gerektiği sinyali verilir. Bu, hassas veriler içeren sayfalar (ör. kullanıcının giriş yaptığı sayfalar) için kullanılmalıdır ancak no-store
yönergesi genellikle hassas veriler içermeyen sayfalarda kullanılır.
bfcache ile, kullanıcı sayfadan ayrıldığında sayfayı yok etmek yerine yok etme işlemini erteliyoruz ve JS yürütmesini duraklatıyoruz. Kullanıcı kısa süre içinde geri dönerse sayfayı tekrar görünür hale getirir ve JS yürütmesini devam ettiririz. Bu sayede kullanıcılar sayfalar arasında neredeyse anında geçiş yapabilir.
HTML spesifikasyonu gerektirmese de tarayıcılar genellikle Cache-Control: no-store
öğesini, sayfayı bfcache'e yerleştirmemek için bir sinyal olarak kabul eder. Bu, bfcache'in kullanılmamasının en büyük nedenidir ve mobil cihazlardaki geçmişte gezinme işlemlerinin yaklaşık% 17'sini, masaüstündeki geçmişte gezinme işlemlerinin ise% 7'sini etkiler. Bu nedenle, bu sayfalar hızlı geri yükleme özelliğinden yararlanamaz ve ağ çağrıları, JavaScript yürütme ve oluşturma dahil olmak üzere sayfanın tamamen yeniden yüklenmesi gerekir.
Genellikle Cache-Control: no-store
, site değiştiğinde önbelleğe alma sorunlarını önlemek için ayarlanır. Ancak bfcache kullanıldığında bu neden daha az önemlidir. Çünkü tam sayfa, sanki başından beri açık bırakılmış gibi neredeyse tamamen geri yüklenir.
Chrome bu davranışı nasıl değiştiriyor?
Chrome, bu davranışı değiştirme niyetini duyurmuş olsa da bu değişikliğe karşı temkinli bir yaklaşım sergiliyor. Chrome 116'dan beri sayfa yüklemelerinin yüzdesini kademeli olarak artırarak denemeler yapıyoruz. Bu oranın Mart ve Nisan 2025'te% 100'e ulaşması bekleniyor.
Hassas veriler
Analizimiz, geri veya ileri gezinmelerin çoğunun hassas veriler içermediğini ve bu nedenle bfcache için uygun olması gerektiğini gösterse de sayfaların bfcache'e yerleştirilmemesi gereken durumlar vardır. Örneğin, oturum kapatıldığında ileri veya geri giderek oturum açılmış bir sayfanın alınması mümkün olmamalıdır.
Bunu önlemek için Chrome, çerezlerde veya diğer yetkilendirme yöntemlerinde yapılan değişikliklerde sayfayı bfcache'ten çıkarır.
Ayrıca, Cache-Control: no-store
kullanan sayfalar için aşağıdaki API'lerin kullanılması, bu sayfaların geri-ileri önbelleğe alınmaya uygun olmamasına neden olmaya devam edecektir:
Bu listenin, bfcache kullanımını engelleyen API'lerin kapsamlı bir listesi olmadığını, ancak sayfadan ayrılırken kullanılmıyor olsalar bile Cache-Control: no-store
sayfalarında bfcache'i engelleyen API'leri içerdiğini unutmayın.
Riski daha da azaltmak için Cache-Control: no-store
sayfalarının geri-ileri önbellek zaman aşımı da 3 dakikaya (Cache-Control: no-store
kullanmayan sayfalar için kullanılan 10 dakikadan) düşürülür.
Enterprise kapsamı dışında kalma seçenekleri
Kuruluşlar genellikle güncellenmesi zor yazılımlara ve paylaşılan cihazlara sahiptir. AllowBackForwardCacheForCacheControlNoStorePageEnabled
politikası devre dışı bırakılarak Cache-Control: no-store
sayfalarında bfcache kullanımının engellenmesine devam edilebilir.
Değişikliği test etme
Geliştiriciler bu değişikliği aşağıdaki işaretle test edebilir:
--enable-features=CacheControlNoStoreEnterBackForwardCache:level/restore-unless-cookie-change
Önceki istisnalardan herhangi biri geçerliyse (ör. çerezler değişiyorsa) bu durum, sayfanın bfcache'i kullanmasını engeller ve Chrome Geliştirici Araçları bfcache test aracında "Ana kaynağı Cache-Control: no-store
olan sayfalar geri/ileri önbelleğe giremez." nedeni gösterilir.
Bu bfcache test sayfasını kullanarak bu işaretle ve işaretsiz test yapabilirsiniz.
Geliştiricilerin bilmesi gerekenler
Geliştiricilerin, kullanıcılarının bu daha fazla bfcache kullanımından yararlanması için herhangi bir değişiklik yapması gerekmez. Ancak bu durumun sonucunda dikkate almaları gereken bazı noktalar olabilir. Bu durum, diğer sitelerin Aralık 2021'de bfcache'in ilk kullanıma sunulması sırasında yaşadığı benzer sorunlara yol açtı.
Geliştiriciler Cache-Control: no-store
kullanımını azaltmaya devam etmeli mi?
Geri/ileri önbelleği, daha önce belirtilen sınırlı koşullar altında ve yalnızca Chrome için Cache-Control: no-store
'da etkinleştirilir. Diğer tarayıcılar, Cache-Control: no-store
kullanıldığında bfcache kullanımını engellemeye devam edebilir.
En iyi uygulama, bu sezgisel yöntemlere güvenmek yerine Cache-Control: no-store
kullanımını en aza indirmektir.
Performansa etkisi
Bu değişikliği, web'deki kullanıcıların sayfa deneyimini iyileştirmek için yapıyoruz. bfcache'i ilk kullanıma sunduğumuzda Core Web Vitals'da belirgin iyileşmeler gördük. Şimdi de bu iyileşmeleri daha fazla siteye getirmek istiyoruz.
Bu özellik kullanıma sunuldukça site sahipleri, Core Web Vitals metriklerinde iyileşme görebilir ve CrUX Vis dahil olmak üzere CrUX'te bfcache kullanımını ölçebilir.
Etki analizi
bfcache'ten geri yüklenen sayfalar, sayfayı yeniden yüklemek yerine eski sayfayı (JavaScript yığını dahil) "geri yükler". Birçok popüler analiz sağlayıcı, yalnızca ilk yüklendiklerinde sayfa görüntülemelerini tetikledikleri için bfcache geri yüklemelerini yeni sayfa görüntülemeleri olarak ölçmez.
Bu nedenle, siteler bfcache'i ilk kez kullanmaya başladıklarında analizlerinde sayfa yüklemelerinde azalma görebilir. pageshow
etkinliği için işleyiciler ayarlayıp persisted
özelliğini kontrol ederek bunları sayfa görüntüleme olarak değerlendirmenizi öneririz:
// Send a pageview when the page is first loaded.
gtag('event', 'page_view');
// Send another pageview if the page is restored from bfcache.
window.addEventListener('pageshow', (event) => {
if (event.persisted) {
// Page was restored from bfcache, sent another page view.
gtag('event', 'page_view');
}
});
Sayfa geri yükleme işlemindeki güncellemeleri işleme
Siteler, daha önce görmedikleri ve sayfanın bunun yerine yeni verilerle tamamen yeniden yüklendiği durumlarda artık bfcache kullanımını görebilir. Bu nedenle, geliştiriciler bfcache geri yüklemesinde verileri yenilemeyi düşünebilir.
Güncellemeler, pageshow
etkinliği kullanılarak ve persisted
özelliği kontrol edilerek, ek sayfa görüntülemelerinin analiz için günlüğe kaydedilmesine benzer şekilde tetiklenebilir.
Tüm içeriklerin güncellenmesi gerekmediğini ve kullanıcıların daha önce gördükleri içeriğe "geri" dönmeyi tercih edebileceğini unutmayın. Örneğin, makale listesinin yenilenmesi, kullanıcının görüntülemek için geri döndüğü bir makaleyi artık görmeyeceği anlamına gelebilir.
Reklamlar üzerindeki etkisi
Analizlerin etkisine benzer şekilde, reklamlar yalnızca sayfa yüklenirken yükleniyorsa sitelerde reklam gösterimlerinde azalma görülebilir. Tam sayfa yüklemeleriyle eşitliği sağlamak için reklamlar, bfcache geri yüklemesinde programatik olarak yenilenebilir. Bu işlem için yine pageshow
etkinliği kullanılır ve persisted
özelliği kontrol edilir ancak bu, her zaman doğru bir işlem olmayabilir. Reklamların yeniden yüklenmesini nasıl tetikleyeceğinizle ilgili olarak reklam sağlayıcınızın belgelerine bakın.
Bfcache hakkında daha fazla bilgi
Bfcache hakkında daha fazla bilgi için kapsamlı bfcache teknik kılavuzumuzu inceleyin.
Geri bildirim
Bu değişiklikle ilgili geri bildirimlerinizi bfcache bileşenini kullanarak Chrome'un sorun izleyicisinde paylaşabilirsiniz.
Sonuç
Kullanıcıların sayfa deneyimini iyileştirmek için bfcache'in avantajlarını çok daha fazla sayfaya sunmaktan heyecan duyuyoruz. Bu değişikliği dikkatlice değerlendirdik ve mümkün olduğunca güvenli bir şekilde kullanıma sunmayı amaçlıyoruz. Burada verilen bilgilerin, geliştiricilerin bu değişikliği anlamasına ve bu durum gerçekleştiğinde sorun yaşamamak için gerekli değişiklikleri yapmasına yardımcı olacağını umuyoruz.