Penyimpanan persisten

Penyimpanan persisten dapat membantu melindungi data penting agar tidak diambil, dan mengurangi kemungkinan kehilangan data.

Ketika dihadapkan pada tekanan penyimpanan seperti kapasitas disk yang rendah, browser biasanya akan menghapus data, termasuk dari Cache API dan IndexedDB, dari asal 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. Dengan demikian, jika pengguna mengunjungi situs Anda secara rutin, kemungkinan kecil data Anda akan dikeluarkan. Untuk mencegah browser menghapus data, Anda dapat meminta agar seluruh penyimpanan situs ditandai sebagai persisten.

Penyimpanan persisten didukung di banyak browser modern.

Dukungan Browser

  • 55
  • 79
  • 57
  • 15.2

Sumber

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

Meminta penyimpanan persisten

Guna 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 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 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, izin tersebut akan ditolak secara diam-diam.

Heuristik untuk menentukan apakah suatu situs penting meliputi:

  • Seberapa tinggi tingkat engagement situs?
  • Apakah situs telah diinstal atau di-bookmark?
  • Apakah situs sudah diberi izin untuk menampilkan notifikasi?

Jika 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 menampilkan pop-up UI yang menanyakan apakah pengguna akan mengizinkan situs untuk menyimpan data dalam 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 mengeluarkan data yang disimpan di:

  • API Cache
  • Kukis
  • Penyimpanan DOM (Penyimpanan Lokal)
  • File System API (sistem file yang disediakan browser dan yang di-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

Riset 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. Dan ingat, hanya minta penyimpanan persisten jika pengguna sangat menginginkannya.

Terima kasih

Terima kasih khususnya kepada Victor Costan, dan Joe Medley karena 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