Cache-Control: no-store için bfcache'i etkinleştirme

Chrome, Cache-Control: no-store kullanan sayfalarda geri/ileri önbelleğe (bfcache) güvenli bir şekilde izin vermek için bir değişiklik yapıyor. Bunun geliştiriciler için ne anlama geldiğini öğrenin.

Arka plan

Cache-Control: no-store değerini HTTP başlığı olarak ayarlamak, sayfanın HTTP önbelleği içinde depolanmaması gerektiğinin bir işaretidir. Bu, hassas veriler içeren sayfalar (ör. kullanıcının giriş yaptığı sayfalar) için kullanılmalıdır ancak no-store yönü genellikle hassas veri içermeyen sayfalarda kullanılır.

bfcache ile, kullanıcı başka bir sayfaya gittiğinde sayfayı kaldırmak yerine kaldırma işlemini erteler ve JS yürütme işlemini duraklatırız. Kullanıcı kısa süre içinde geri dönerse sayfayı tekrar görünür hale getirir ve JS yürütme işleminin duraklatılmasını kaldırırız. Bu sayede kullanıcılar sayfalar arasında neredeyse anında gezinebilir.

HTML spesifikasyonu tarafından zorunlu tutulmasa da tarayıcılar genellikle sayfayı bfcache'e yerleştirmemek için Cache-Control: no-store değerini bir sinyal olarak alır. Bu, mobil cihazlarda geçmiş gezinmelerinin yaklaşık% 17'si ve masaüstünde geçmiş gezinmelerinin yaklaşık% 7'si için bfcache'in kullanılmamasının en büyük nedenidir. Bu, bu sayfaların hızlı geri yüklemelerden yararlanamadığı ve ağ çağrıları, JavaScript yürütme ve oluşturma dahil olmak üzere sayfanın tamamen yeniden yüklenmesi gerektiği anlamına gelir.

Cache-Control: no-store genellikle site değiştiğinde önbelleğe alma sorunlarını önlemek için ayarlanır. Ancak bfcache kullanıldığında sayfanın tamamı neredeyse hiç kapatılmamış gibi geri yükleneceğinden bu neden daha az geçerlidir.

Chrome bu davranışı nasıl değiştiriyor?

Chrome, bu davranışı değiştirme niyetini duyurdu ancak bu konuda ihtiyatlı bir yaklaşım sergiliyor. Chrome 116'dan beri denemeler yapıyoruz ve yakın zamana kadar bu denemeler sayfa yüklemelerinin% 5'inde çalışıyordu.

Bu oranı 2 Ekim'de sayfa yüklemelerinin% 10'una çıkardık ve Kasım'da sayfa yüklemelerinin% 20'sine, gelecek yılın başlarında ise% 50'sine çıkarmayı planlıyoruz. Ardından, kısa bir süre sonra bu özelliği tamamen kullanıma sunacağız. Aşağıda, belirli kapsam dışında kalma seçenekleri hakkında bilgi verilmektedir.

Hassas veriler

Analizlerimiz, geri veya ileri gezinmelerin çoğunun hassas veriler içermediğini ve bu nedenle bfcache için uygun olduğunu gösteriyor olsa da sayfaların bfcache'e yerleştirilmemesi gereken durumlar vardır. Örneğin, oturum kapatıldığında geri veya ileri giderek oturum açmış bir sayfayı almak mümkün olmamalıdır.

Chrome, bu durumu önlemek için çerezlerde veya diğer yetkilendirme yöntemlerinde değişiklik yapıldığında sayfayı bfcache'ten çıkarır.

Ayrıca, Cache-Control: no-store kullanan sayfalarda aşağıdaki API'lerin kullanılması, bu sayfaların bfcache için uygun olmamasına neden olmaya devam edecektir:

Bu, bfcache kullanımını engelleyen API'lerin kapsamlı bir listesi değildir. Bunun yerine, sayfadan ayrılırken kullanılmasa bile Cache-Control: no-store sayfalarında bfcache'i engelleyen API'leri içerir.

Riski daha da azaltmak için Cache-Control: no-store sayfaları için bfcache zaman aşımı da 3 dakikaya düşürüldü (Cache-Control: no-store kullanmayan sayfalarda kullanılan 10 dakikadan).

Kuruluşların kapsam dışında kalma tercihleri

Kuruluşlarda genellikle güncellenmesi zor yazılımlar ve paylaşılan cihazlar bulunur. AllowBackForwardCacheForCacheControlNoStorePageEnabled sayfalarında bfcache kullanımını engellemeye devam etmek için Cache-Control: no-store politikası devre dışı bırakılabilir.

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. çerezlerin değişmesi) bu durum, sayfanın bfcache'i kullanmasını engeller. Chrome DevTools bfcache test cihazında "Ana kaynağında Cache-Control: no-store bulunan sayfalar geri/ileri önbelleğe giremez." şeklinde bir neden gösterilir.

Bu işaretle ve işaretsiz olarak test etmek için bu bfcache test sayfasını kullanabilirsiniz.

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ı gerekmese de bunun sonucunda dikkate almaları gereken bazı noktalar vardır. Bunlar, Aralık 2021'de bfcache'in ilk lansmanında diğer sitelerin karşılaşmış olabileceği benzer hususlardır.

Performansa etkisi

Bu değişikliği, web'deki kullanıcılar için sayfa deneyimini iyileştirmek amacıyla yapıyoruz. bfcache'i ilk kullanıma sunduğumuzda Core Web Vitals'ta belirgin iyileştirmeler gördük. Şimdi de bu iyileştirmeleri daha fazla siteye sunmak istiyoruz.

Site sahipleri, bu özellik kullanıma sunulduğunda Core Web Vitals'larında bir iyileşme görebilir ve CrUX kontrol paneli dahil olmak üzere CrUX'ta bfcache kullanımını ölçebilir.

Etki analizleri

bfcache'den 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üklendiğinde sayfa görüntülemelerini tetikledikleri için bfcache geri yüklemelerini yeni sayfa görüntülemeleri olarak ölçmez.

Bu nedenle, bfcache'i ilk kez kullanmaya başlayan siteler, analizlerinde sayfa yüklemelerinde düşüş görebilir. pageshow etkinliği için dinleyiciler ayarlayarak ve persisted mülkünü kontrol ederek bunları sayfa görüntülemeleri 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şleminde güncellemeleri işleme

Siteler artık daha önce görmedikleri bfcache kullanımını görebilir ve sayfanın yeni verilerle tamamen yeniden yüklenmesi gerekir. Bu nedenle geliştiriciler, bfcache geri yükleme işleminde verileri yenilemeyi düşünebilir.

Güncellemeler, pageshow etkinliğini kullanarak ve persisted mülkünü kontrol ederek analizler için ek sayfa görüntülemelerinin günlüğe kaydedilmesine benzer şekilde tetiklenebilir.

Tüm içeriklerin güncellenmesi gerekmez ve kullanıcıların daha önce gördükleri içeriğe "geri" dönmeyi tercih edebileceğini unutmayın. Örneğin, bir makale listesinin yenilenmesi, kullanıcının geri dönüp görüntülemek istediği bir makaleyi artık görememesi anlamına gelebilir.

Reklamlar üzerindeki etki

Analizler üzerindeki etkiye benzer şekilde, reklamlar yalnızca sayfa yüklendiğinde yüklenirse sitelerde reklam gösterimlerinde düşüş görülebilir. Tam sayfa yüklemeleriyle eşleşme sağlamak için reklamlar, bfcache geri yüklenirken pageshow etkinliği tekrar kullanılarak ve persisted mülkü kontrol edilerek programatik olarak yenilenebilir. Ancak bu, her zaman doğru işlem olmayabilir. Reklam yeniden yüklemelerinin nasıl tetikleneceğiyle ilgili olarak reklam sağlayıcınızın dokümanlarına 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 Chrome'un sorun izleyicisinde bfcache bileşenini kullanarak paylaşabilirsiniz.

Sonuç

Kullanıcıların sayfa deneyimini iyileştirmek için bfcache'in avantajlarını daha birçok sayfaya sunmaktan heyecan duyuyoruz. Bu değişikliği dikkatle değerlendirdik ve mümkün olduğunca güvenli bir şekilde uygulamaya koymayı amaçlıyoruz. Burada sağlanan bilgilerin, geliştiricilerin bu değişikliği anlamasına ve bu durumda sorun yaşamamak için gerekli değişiklikleri yapmasına yardımcı olacağını umuyoruz.