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.
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 adalahfalse
(default) atautrue
.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.