Penyimpanan persisten

Penyimpanan persisten dapat membantu melindungi data penting dari penghapusan, dan mengurangi kemungkinan kehilangan data.

Saat menghadapi tekanan penyimpanan seperti ruang disk yang rendah, browser biasanya menghapus data, termasuk dari Cache API dan IndexedDB, dari origin yang paling lama tidak digunakan. Hal ini dapat menyebabkan hilangnya data jika aplikasi belum menyinkronkan data dengan server, dan mengurangi keandalan aplikasi dengan menghapus resource yang diperlukan agar aplikasi berfungsi, yang keduanya menyebabkan pengalaman pengguna yang negatif.

Untungnya, riset oleh tim Chrome menunjukkan bahwa data sangat jarang dihapus secara otomatis oleh Chrome. Pengguna jauh lebih sering menghapus penyimpanan secara manual. Jadi, jika pengguna sering mengunjungi situs Anda, kemungkinan data Anda akan dikeluarkan sangat kecil. Untuk mencegah browser menghapus data Anda, Anda dapat meminta agar penyimpanan seluruh situs Anda ditandai sebagai persisten.

Penyimpanan persisten didukung di banyak browser modern.

Browser Support

  • Chrome: 55.
  • Edge: 79.
  • Firefox: 57.
  • Safari: 15.2.

Source

Untuk mempelajari lebih lanjut pengusiran, jumlah yang dapat Anda simpan, dan cara menangani batasan kuota, lihat Penyimpanan untuk web.

Periksa 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 diselesaikan 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 agar penyimpanan Anda ditandai sebagai persisten adalah saat Anda menyimpan data pengguna penting, dan permintaan tersebut idealnya harus di-wrap dalam gestur pengguna. Jangan meminta penyimpanan persisten saat pemuatan halaman, atau di kode bootstrap lainnya, browser dapat meminta izin pengguna. Jika pengguna tidak melakukan apa pun yang menurut mereka perlu disimpan, perintah tersebut mungkin membingungkan, dan mereka cenderung menolak permintaan tersebut. Selain itu, jangan terlalu sering memberikan perintah. Jika pengguna memutuskan untuk tidak memberikan izin, jangan segera meminta lagi pada penyimpanan berikutnya.

Meminta penyimpanan persisten

Untuk meminta penyimpanan persisten bagi data situs Anda, panggil navigator.storage.persist(). Metode ini menampilkan Promise yang di-resolve dengan boolean, yang menunjukkan apakah izin penyimpanan persisten 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 diperlakukan sebagai izin. Browser menggunakan faktor yang berbeda untuk memutuskan apakah akan memberikan izin penyimpanan persisten atau tidak.

Chrome dan browser berbasis Chromium lainnya

Chrome, dan sebagian besar browser berbasis Chromium lainnya secara otomatis menangani permintaan izin, dan tidak menampilkan perintah apa pun kepada pengguna. Sebagai gantinya, jika situs dianggap penting, izin penyimpanan persisten akan diberikan secara otomatis, jika tidak, izin akan ditolak secara diam-diam.

Heuristik untuk menentukan apakah situs penting mencakup:

  • Seberapa tinggi tingkat engagement situs?
  • Apakah situs telah diinstal atau ditandai?
  • Apakah situs telah diberi izin untuk menampilkan notifikasi?

Jika permintaan ditolak, permintaan dapat diajukan lagi nanti dan akan dievaluasi menggunakan heuristik yang sama.

Firefox

Firefox mendelegasikan permintaan izin kepada pengguna. Saat penyimpanan persisten diminta, pengguna akan melihat pop-up UI yang menanyakan apakah mereka akan mengizinkan situs menyimpan data di penyimpanan persisten.

Pop-up yang ditampilkan oleh Firefox saat situs meminta penyimpanan persisten.
Pop-up yang ditampilkan oleh Firefox saat situs meminta penyimpanan persisten.

Penyimpanan apa yang dilindungi oleh penyimpanan persisten?

Jika izin penyimpanan persisten diberikan, browser tidak akan menghapus data yang disimpan di:

  • Cache API
  • Cookie
  • Penyimpanan DOM (Penyimpanan Lokal)
  • File System API (sistem file yang disediakan browser dan di-sandbox)
  • IndexedDB
  • Service worker
  • Cache Aplikasi (tidak digunakan lagi, jangan gunakan)
  • WebSQL (tidak digunakan lagi, jangan gunakan)

Cara menonaktifkan penyimpanan persisten

Saat ini, tidak ada cara terprogram untuk memberi tahu browser bahwa Anda tidak lagi memerlukan penyimpanan persisten.

Kesimpulan

Riset dari tim Chrome menunjukkan bahwa meskipun mungkin, data tersimpan jarang dihapus secara otomatis oleh Chrome. Untuk melindungi data penting yang mungkin tidak disimpan di cloud, atau akan menyebabkan kehilangan data yang signifikan, penyimpanan persisten dapat menjadi alat yang berguna untuk memastikan bahwa data Anda tidak dihapus oleh browser saat perangkat lokal menghadapi tekanan penyimpanan. Ingat, hanya minta penyimpanan persisten saat pengguna kemungkinan besar menginginkannya.

Terima kasih

Terima kasih khusus kepada Victor Costan dan Joe Medley yang telah meninjau dokumen ini. Terima kasih kepada Chris Wilson yang menulis versi asli dokumen ini yang pertama kali muncul di WebFundamentals.