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 bir süre içinde geri giderse 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 gezinebilir.

HTML spesifikasyonu gereği gerekli olmasa da tarayıcılar, sayfayı bfcache'ye yerleştirmekten kaçınmak için genellikle Cache-Control: no-store değerini sinyal olarak alır. Bu, mobil cihazlarda geçmiş gezinmelerinin yaklaşık %17'sinde ve masaüstünde geçmiş gezinmelerinin %7'sinde bfcache'in kullanılmamasının en büyük nedenidir. Bu durum, bu sayfaların hızlı geri yükleme işlemlerinden yararlanamayacağı ve tüm ağ çağrıları, JavaScript yürütme ve oluşturma da dahil olmak üzere sayfayı tamamen yeniden yüklemesi 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 ayında sayfa yüklemelerinin% 20'sini, gelecek yılın başlarında ise% 50'yi artırmayı planlıyoruz. Kısa süre sonra bu özelliği kullanıma sunmayı ve belirli devre dışı bırakma seçeneklerini bir sonraki gündeme getirmeyi planlıyoruz.

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 çıkış yaparken, ileri veya geri giderek giriş yapılmış 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 uygunluğunu etkilemeye 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şlar genellikle güncellenmesi zor yazılımlara ve paylaşılan cihazlara sahiptir. Cache-Control: no-store sayfalarında bfcache kullanımını engellemeye devam etmek için AllowBackForwardCacheForCacheControlNoStorePageEnabled 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." ifadesi 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 analizi

bfcache'tan geri yüklenen sayfalar, sayfayı yeniden yüklemek yerine eski sayfayı (JavaScript yığını dahil) "geri yükleyin". Birçok popüler analiz sağlayıcı, yalnızca ilk yüklendiğinde sayfa görüntülemelerini tetiklediğinden bfcache geri yüklemelerini yeni sayfa görüntülemeleri olarak ölçmez.

Bu nedenle siteler bfcache'yi ilk kez kullanmaya başladıklarında analizlerindeki sayfa yüklemelerinde bir azalma görebilir. pageshow etkinliği için işleyiciler ayarlayarak ve 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üklemede 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.