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.