Dipublikasikan: 21 Oktober 2024, Terakhir diperbarui: 9 September 2025
Chrome melakukan perubahan untuk mengizinkan penggunaan back/forward cache (bfcache) untuk halaman yang menggunakan Cache-Control: no-store
jika hal ini aman dilakukan. Cari tahu apa artinya bagi developer.
Latar belakang
Menetapkan Cache-Control: no-store
sebagai Header HTTP adalah sinyal bahwa halaman tidak boleh disimpan dalam cache HTTP. Ini harus digunakan untuk halaman yang berisi data sensitif—misalnya, untuk halaman saat pengguna login—tetapi direktif no-store
sering digunakan di halaman tanpa data sensitif.
Dengan bfcache, alih-alih menghancurkan halaman saat pengguna keluar, kita menunda penghancuran dan menjeda eksekusi JS. Jika pengguna segera kembali, kami akan menampilkan halaman lagi dan melanjutkan eksekusi JS. Hal ini menghasilkan navigasi halaman yang hampir instan bagi pengguna.
Meskipun tidak diwajibkan oleh spesifikasi HTML, browser biasanya menggunakan Cache-Control: no-store
sebagai sinyal untuk menghindari penempatan halaman di bfcache. Hal ini adalah alasan terbesar bfcache tidak digunakan, untuk sekitar 17% navigasi histori di perangkat seluler dan 7% navigasi histori di desktop. Artinya, halaman ini tidak mendapatkan manfaat dari pemulihan cepat dan harus memuat ulang halaman sepenuhnya, termasuk panggilan jaringan, eksekusi JavaScript, dan rendering.
Cache-Control: no-store
sering ditetapkan untuk menghindari masalah caching saat situs berubah, tetapi alasan ini kurang relevan saat bfcache digunakan, karena seluruh halaman dipulihkan hampir seolah-olah halaman tersebut dibiarkan terbuka.
Cara Chrome mengubah perilaku ini
Chrome telah mengumumkan niat untuk mengubah perilaku ini, tetapi mengambil pendekatan yang hati-hati terhadap perubahan ini. Kami telah menjalankan eksperimen sejak Chrome 116 dengan secara bertahap meningkatkan persentase pemuatan halaman dan hal ini diperkirakan akan mencapai 100% pada Maret dan April 2025.
Data sensitif
Meskipun analisis kami menunjukkan bahwa sebagian besar navigasi kembali atau maju tidak menyertakan data sensitif sehingga memenuhi syarat untuk bfcache, ada kasus ketika halaman tidak boleh ditempatkan di bfcache. Misalnya, saat logout, halaman yang login tidak boleh dapat diambil dengan kembali atau maju.
Untuk menghindari hal ini, Chrome akan mengeluarkan halaman dari bfcache saat ada perubahan pada cookie, atau metode otorisasi lainnya.
Selain itu, penggunaan API berikut untuk halaman yang menggunakan Cache-Control: no-store
akan terus membuat halaman tersebut tidak memenuhi syarat untuk bfcache:
Perhatikan bahwa ini bukan daftar lengkap API yang mencegah penggunaan bfcache, tetapi API yang memblokir bfcache di halaman Cache-Control: no-store
meskipun tidak digunakan saat meninggalkan halaman.
Waktu tunggu bfcache untuk halaman Cache-Control: no-store
juga dikurangi menjadi 3 menit (dari 10 menit yang digunakan untuk halaman yang tidak menggunakan Cache-Control: no-store
) untuk lebih mengurangi risiko.
Penolakan perusahaan
Perusahaan sering kali memiliki software yang sulit diupdate dan perangkat bersama. Kebijakan AllowBackForwardCacheForCacheControlNoStorePageEnabled
dapat dinonaktifkan untuk terus mencegah penggunaan bfcache untuk halaman Cache-Control: no-store
.
Menguji perubahan
Developer dapat menguji perubahan ini dengan tanda berikut:
--enable-features=CacheControlNoStoreEnterBackForwardCache:level/restore-unless-cookie-change
Jika salah satu pengecualian sebelumnya berlaku—misalnya, cookie berubah—hal ini akan mencegah halaman menggunakan bfcache dengan alasan "Halaman yang resource utamanya memiliki Cache-Control: no-store
tidak dapat masuk ke back-forward cache" yang ditampilkan di penguji bfcache Chrome DevTools.
Anda dapat menggunakan halaman pengujian bfcache ini untuk melakukan pengujian dengan dan tanpa tanda ini.
Yang harus diketahui developer
Meskipun developer tidak perlu melakukan perubahan apa pun agar pengguna mereka dapat memanfaatkan penggunaan bfcache yang lebih besar ini, ada beberapa hal yang mungkin perlu mereka pertimbangkan sebagai akibatnya. Pertimbangan serupa ini mungkin dialami situs lain saat peluncuran awal bfcache pada Desember 2021.
Apakah developer masih harus berupaya mengurangi penggunaan Cache-Control: no-store
?
bfcache diaktifkan untuk Cache-Control: no-store
dalam situasi terbatas yang disebutkan sebelumnya dan hanya untuk Chrome. Browser lain mungkin masih memblokir penggunaan bfcache saat Cache-Control: no-store
digunakan.
Praktik terbaiknya tetap meminimalkan penggunaan Cache-Control: no-store
, bukan mengandalkan heuristik ini.
Dampak terhadap performa
Alasan kami melakukan perubahan ini adalah untuk meningkatkan kualitas pengalaman halaman bagi pengguna di web. Kami melihat peningkatan yang signifikan pada Core Web Vitals saat pertama kali meluncurkan bfcache, dan kini kami ingin menghadirkan peningkatan yang sama ke lebih banyak situs.
Pemilik situs mungkin melihat peningkatan pada Data Web Inti mereka saat fitur ini diluncurkan, dan dapat mengukur penggunaan bfcache di CrUX, termasuk di CrUX Vis.
Analisis dampak
Halaman yang dipulihkan dari bfcache "memulihkan" halaman lama (termasuk heap JavaScript) daripada memuat ulang halaman. Banyak penyedia analisis populer tidak mengukur pemulihan bfcache sebagai tayangan halaman baru karena hanya memicu tayangan halaman saat pertama kali dimuat.
Oleh karena itu, situs mungkin melihat penurunan pemuatan halaman dalam analisisnya saat mulai menggunakan bfcache untuk pertama kalinya. Sebaiknya pertimbangkan ini sebagai tayangan halaman, dengan menyetel pemroses untuk peristiwa pageshow
dan memeriksa properti persisted
:
// 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');
}
});
Menangani pembaruan saat pemulihan halaman
Karena situs kini dapat melihat penggunaan bfcache saat mereka tidak melihatnya sebelumnya dan saat halaman akan dimuat ulang sepenuhnya dengan data baru, developer mungkin ingin mempertimbangkan untuk memuat ulang data saat pemulihan bfcache.
Pembaruan dapat dipicu dengan cara yang serupa dengan mencatat tampilan halaman tambahan untuk analisis menggunakan peristiwa pageshow
dan memeriksa properti persisted
.
Perhatikan bahwa tidak semua konten perlu diperbarui dan pengguna mungkin lebih suka "kembali" ke konten yang mereka lihat sebelumnya. Misalnya, memuat ulang daftar artikel dapat berarti pengguna tidak lagi melihat artikel yang ingin mereka lihat kembali.
Dampak pada iklan
Mirip dengan dampak analisis, situs mungkin melihat penurunan tayangan iklan jika iklan hanya dimuat saat pemuatan halaman. Iklan dapat dimuat ulang secara terprogram saat pemulihan bfcache untuk memastikan kesamaan dengan pemuatan halaman penuh, sekali lagi menggunakan peristiwa pageshow
dan memeriksa properti persisted
, tetapi tidak selalu merupakan hal yang tepat untuk dilakukan. Lihat dokumentasi penyedia iklan Anda tentang cara memicu pemuatan ulang iklan.
Informasi selengkapnya tentang bfcache
Untuk mengetahui informasi selengkapnya tentang bfcache, lihat panduan teknis bfcache komprehensif kami.
Masukan
Kami ingin mendengar masukan tentang perubahan ini yang dapat diberikan di pelacak masalah Chrome menggunakan komponen bfcache.
Kesimpulan
Kami senang dapat menghadirkan manfaat bfcache ke lebih banyak halaman untuk meningkatkan kualitas halaman bagi pengguna. Kami telah mempertimbangkan perubahan ini dengan cermat dan pendekatan kami berupaya meluncurkannya seaman mungkin. Kami harap informasi yang diberikan di sini akan membantu developer memahami perubahan ini dan melakukan perubahan yang diperlukan untuk menghindari masalah saat perubahan ini terjadi.