Tidak semua penyimpanan dibuat sama: memperkenalkan Bucket Storage

Storage Standard menentukan API untuk penyimpanan persisten dan perkiraan kuota, dan arsitektur penyimpanan platform. Kami meluncurkan API untuk menghapus penyimpanan persisten dalam jumlah besar tekanan memori lebih dapat diprediksi. Fitur ini tersedia mulai Chromium 122.

Masalah apa yang diselesaikan oleh standar penyimpanan?

Biasanya, saat pengguna kehabisan ruang penyimpanan di perangkatnya, data akan disimpan dengan API seperti Responden atau localStorage akan hilang tanpa pengguna dapat ikut campur. Suatu cara untuk membuat persisten penyimpanan adalah melalui pemanggilan Metode persist() dari Antarmuka StorageManager. Alat ini secara bersamaan meminta izin dari pengguna akhir dan mengubah menjadi persisten setelah diberikan:

const persisted = await navigator.storage.persist();
if (persisted) {
  /* Storage will not be cleared except by explicit user action. */
}

Metode untuk meminta penyimpanan dipertahankan semuanya atau tidak sama sekali. Tidak ada cara untuk mengekspresikan lebih kebutuhan persistensi yang mendetail. Semua dalam satu bucket penyimpanan.

Storage Buckets API

Ide inti dari Storage Buckets API adalah sehingga situs dapat membuat banyak bucket penyimpanan, dan browser dapat memilih untuk menghapus setiap bucket secara terpisah dari bucket lain. Hal ini memungkinkan developer menentukan penghapusan pengaturan prioritas untuk memastikan data yang paling berharga tidak dihapus.

Contoh kasus penggunaan

Untuk mengilustrasikan kegunaan bucket penyimpanan, bayangkan sebuah aplikasi email. Pastinya tidak bisa dimaafkan jika aplikasi kehilangan draf pengguna yang belum terkirim yang hanya ada di klien. Sebaliknya, jika mereka disimpan di server, pengguna mungkin akan baik-baik saja dengan beberapa email kotak masuk terlama mereka dihapus dari klien jika {i>browser<i} mereka menerima banyak tekanan penyimpanan.

Antarmuka aplikasi email
Aplikasi email dengan bucket penyimpanan terpisah untuk kotak masuk dan draf. (Hanya untuk tujuan ilustrasi, ini tidak selalu mencerminkan cara kerja Gmail.)

Menggunakan Storage Buckets API

Membuat bucket penyimpanan baru

Bucket penyimpanan baru dapat dibuat dengan metode open() di StorageBucketManager dalam antarmuka berbasis web yang sederhana.

// Create a storage bucket for emails that are synchronized with the
// server.
const inboxBucket = await navigator.storageBuckets.open('inbox');

Membuat bucket penyimpanan baru yang dipertahankan

Untuk memastikan bucket penyimpanan dipertahankan, Anda dapat meneruskan opsi durability dan persisted argumen ke metode open():

  • persisted menentukan apakah bucket penyimpanan harus dipertahankan atau tidak. Nilai yang diizinkan adalah false (default) atau true.
  • durability memberikan petunjuk kepada browser yang membantunya menukar performa operasi tulis dengan mengurangi risiko kehilangan data jika terjadi pemadaman listrik. Nilai yang diizinkan adalah 'relaxed' (default) atau 'strict':

    • 'strict' bucket berupaya meminimalkan risiko kehilangan data saat listrik mati. Hal ini dapat terjadi pada biaya akibat penurunan performa, yang berarti bahwa operasi tulis mungkin memerlukan waktu lebih lama untuk diselesaikan, dapat berdampak performa sistem secara keseluruhan, dapat menghabiskan lebih banyak daya baterai, dan dapat merusak perangkat penyimpanan dengan lebih cepat.
    • 'relaxed' bucket mungkin "lupa" operasi tulis yang diselesaikan dalam beberapa detik terakhir, ketika terjadi kehilangan daya. Hasilnya, menulis data ke bucket ini dapat memiliki performa yang lebih baik karakteristik khusus, dan dapat memungkinkan pengisian daya baterai lebih lama, serta dapat menyebabkan penyimpanan yang lebih lama masa pakai perangkat. Selain itu, pemadaman listrik tidak akan menyebabkan kerusakan data pada tingkat yang lebih tinggi daripada 'strict' bucket.
// Create a storage bucket for email drafts that only exist on the client.
const draftsBucket = await navigator.storageBuckets.open('drafts', {
  durability: 'strict', // Or `'relaxed'`.
  persisted: true, // Or `false`.
});

Mengakses API penyimpanan dari bucket penyimpanan

Misalnya, setiap bucket penyimpanan dikaitkan dengan API penyimpanan IndexedDB, Cache, atau File. API penyimpanan ini berfungsi sesuai seperti biasa, hanya saja titik entrinya berasal dari antarmuka StorageBucket, misalnya, StorageBucket.indexedDB.

const inboxDb = await new Promise(resolve => {
  const request = inboxBucket.indexedDB.open('messages');
  request.onupgradeneeded = () => { /* migration code */ };
  request.onsuccess = () => resolve(request.result);
  request.onerror = () => reject(request.error);
});

Men-debug bucket penyimpanan di DevTools

Periksa bucket penyimpanan di hierarki khusus pada Application > Penyimpanan.

Sebelum dan sesudah mengaktifkan hierarki bucket penyimpanan di bagian Storage.

Referensi yang berguna