Penyimpanan persisten dapat membantu melindungi data penting dari penghapusan, dan mengurangi kemungkinan kehilangan data.
Apabila dihadapkan pada tekanan penyimpanan seperti kapasitas disk yang hampir habis, browser biasanya akan mengeluarkan data, termasuk dari Cache API dan IndexedDB, dari origin yang paling lama digunakan. Hal ini dapat menyebabkan kehilangan data jika aplikasi belum menyinkronkan data dengan server, dan mengurangi keandalan aplikasi dengan menghapus resource yang diperlukan agar aplikasi dapat berfungsi, yang keduanya menyebabkan pengalaman pengguna yang negatif.
Untungnya, penelitian oleh tim Chrome menunjukkan bahwa data sangat jarang dihapus secara otomatis oleh Chrome. Jauh lebih umum bagi pengguna untuk menghapus penyimpanan secara manual. Jadi, jika pengguna mengunjungi situs Anda secara rutin, kemungkinan kecil data Anda akan dihapus. Untuk mencegah browser menghapus data, Anda dapat meminta agar seluruh penyimpanan situs ditandai persisten.
Penyimpanan persisten didukung di banyak browser modern.
Untuk mempelajari penghapusan lebih lanjut, jumlah penyimpanan yang dapat Anda simpan, dan cara menangani batasan kuota, lihat Penyimpanan untuk web.
Memeriksa apakah penyimpanan situs Anda telah ditandai sebagai persisten
Anda dapat menggunakan JavaScript untuk menentukan apakah penyimpanan situs Anda telah ditandai sebagai persisten. Memanggil navigator.storage.persisted()
akan menampilkan Promise yang di-resolve dengan boolean, yang menunjukkan apakah penyimpanan telah ditandai sebagai persisten.
// Check if site's storage has been marked as persistent
if (navigator.storage && navigator.storage.persist) {
const isPersisted = await navigator.storage.persisted();
console.log(`Persisted storage granted: ${isPersisted}`);
}
Kapan saya harus meminta penyimpanan persisten?
Waktu terbaik untuk meminta penyimpanan Anda agar ditandai sebagai persisten adalah saat Anda menyimpan data pengguna yang penting, dan permintaan ini idealnya harus digabungkan dalam gestur pengguna. Jangan meminta penyimpanan persisten saat pemuatan halaman, atau dalam kode bootstrap lainnya, browser dapat meminta izin pengguna. Jika pengguna tidak melakukan apa pun yang menurut mereka perlu disimpan, perintah mungkin membingungkan dan mereka akan menolak permintaan tersebut. Selain itu, jangan terlalu sering meminta. Jika pengguna memutuskan untuk tidak memberikan izin, jangan langsung meminta lagi pada penyimpanan berikutnya.
Meminta penyimpanan persisten
Untuk meminta penyimpanan persisten untuk data situs Anda, panggil navigator.storage.persist()
. Metode ini menampilkan Promise yang di-resolve dengan boolean, yang menunjukkan apakah izin penyimpanan persisten telah diberikan.
// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
const isPersisted = await navigator.storage.persist();
console.log(`Persisted storage granted: ${isPersisted}`);
}
Bagaimana izin diberikan?
Penyimpanan persisten dianggap sebagai izin. Browser menggunakan berbagai faktor untuk memutuskan apakah akan memberikan izin penyimpanan persisten atau tidak.
Chrome dan browser berbasis Chromium lainnya
Chrome, dan sebagian besar browser berbasis Chromium lainnya akan otomatis menangani permintaan izin, dan tidak menampilkan perintah apa pun kepada pengguna. Sebagai gantinya, jika suatu situs dianggap penting, izin penyimpanan persisten akan otomatis diberikan. Jika tidak, situs akan ditolak secara otomatis.
Heuristik untuk menentukan apakah suatu situs itu penting meliputi:
- Seberapa tinggi tingkat engagement situs?
- Apakah situs tersebut telah diinstal atau di-bookmark?
- Apakah situs telah diberi izin untuk menampilkan notifikasi?
Jika permintaan ditolak, permintaan dapat diminta lagi nanti dan akan dievaluasi menggunakan heuristik yang sama.
Firefox
Firefox mendelegasikan permintaan izin kepada pengguna. Saat penyimpanan persisten diminta, pengguna akan diminta untuk menampilkan pop-up UI yang menanyakan apakah mereka mengizinkan situs menyimpan data dalam penyimpanan persisten.
![Pop-up yang ditampilkan oleh Firefox saat situs meminta penyimpanan persisten.](https://web.developers.google.cn/static/articles/persistent-storage/image/a-popup-shown-firefox-a-c1a6b170da587.jpg?authuser=9&hl=id)
Penyimpanan apa yang dilindungi oleh penyimpanan persisten?
Jika izin penyimpanan persisten diberikan, browser tidak akan mengeluarkan data yang disimpan di:
- API Cache
- Kukis
- Penyimpanan DOM (Penyimpanan Lokal)
- File System API (sistem file yang disediakan browser dan dalam sandbox)
- IndexedDB
- Service worker
- Cache Aplikasi (tidak digunakan lagi, tidak boleh digunakan)
- WebSQL (tidak digunakan lagi, tidak boleh digunakan)
Cara menonaktifkan penyimpanan persisten
Saat ini, tidak ada cara terprogram untuk memberi tahu browser bahwa Anda tidak lagi memerlukan penyimpanan persisten.
Kesimpulan
Penelitian dari tim Chrome menunjukkan bahwa meskipun memungkinkan, data yang disimpan jarang dihapus secara otomatis oleh Chrome. Untuk melindungi data penting yang mungkin tidak disimpan di cloud, atau akan mengakibatkan kehilangan data yang signifikan, penyimpanan persisten dapat menjadi alat yang berguna untuk memastikan data Anda tidak dihapus oleh browser saat perangkat lokal mengalami tekanan penyimpanan. Ingat, hanya minta penyimpanan persisten saat pengguna kemungkinan besar menginginkannya.
Terima kasih
Terima kasih khusus kepada Victor Costan, dan Joe Medley telah meninjau artikel ini. Terima kasih kepada Chris Wilson yang menulis versi asli artikel ini yang pertama kali muncul di WebFundamentals.
Banner besar oleh Umberto di Unsplash