Storage Standard menentukan API untuk perkiraan kuota dan penyimpanan persisten, serta arsitektur penyimpanan platform. Kami meluncurkan API untuk membuat penghapusan penyimpanan persisten dalam tekanan memori yang besar 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 yang disimpan dengan API seperti
IndexedDB atau localStorage
akan hilang tanpa dapat diintervensi pengguna. Cara agar
penyimpanan tetap persisten adalah dengan memanggil metode
persist()
dari
antarmuka StorageManager
. Alat ini secara bersamaan meminta izin kepada pengguna akhir dan mengubah
penyimpanan 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 kebutuhan persistensi yang lebih mendetail. Semua dalam satu bucket penyimpanan.
Storage Buckets API
Ide inti dari Storage Buckets API adalah memberi situs kemampuan untuk membuat beberapa bucket penyimpanan, tempat browser dapat memilih untuk menghapus setiap bucket secara terpisah dari bucket lain. Hal ini memungkinkan developer menentukan prioritas penghapusan untuk memastikan data yang paling berharga tidak dihapus.
Contoh kasus penggunaan
Untuk mengilustrasikan kegunaan bucket penyimpanan, bayangkan sebuah aplikasi email. Tidak akan dimaafkan jika aplikasi kehilangan draf pengguna yang belum terkirim yang hanya ada di klien. Sebaliknya, jika email tersebut disimpan di server, pengguna mungkin tidak akan masalah jika beberapa email kotak masuk terlama mereka dihapus dari klien jika browser mengalami tekanan penyimpanan yang berat.
![Antarmuka aplikasi email](https://developer.chrome.com/static/docs/web-platform/storage-buckets/image/email-app-interface-174aa34e599a1.png?authuser=6&hl=id)
Menggunakan Storage Buckets API
Membuat bucket penyimpanan baru
Bucket penyimpanan baru dapat dibuat dengan metode open()
pada antarmuka
StorageBucketManager
.
// 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 argumen opsi durability
dan persisted
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 mengurangi performa operasi tulis dengan risiko kehilangan data jika terjadi kegagalan daya. Nilai yang diizinkan adalah'relaxed'
(default) atau'strict'
:'strict'
bucket berupaya meminimalkan risiko kehilangan data saat listrik mati. Hal ini mungkin mengakibatkan biaya penurunan performa, yang berarti operasi tulis mungkin memerlukan waktu lebih lama untuk diselesaikan, dapat memengaruhi performa sistem secara keseluruhan, dapat menghabiskan lebih banyak daya baterai, dan dapat lebih cepat aus perangkat penyimpanan.- Bucket
'relaxed'
dapat "menglupakan" penulisan yang selesai dalam beberapa detik terakhir, saat terjadi kehilangan daya. Hasilnya, menulis data ke bucket ini dapat memiliki karakteristik performa yang lebih baik, dan dapat memungkinkan pengisian daya baterai lebih lama, serta dapat menyebabkan masa pakai perangkat penyimpanan yang lebih lama. Selain itu, kegagalan daya tidak akan menyebabkan kerusakan data lebih tinggi daripada untuk bucket'strict'
.
// 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
Setiap bucket penyimpanan dikaitkan dengan API penyimpanan, misalnya, IndexedDB, antarmuka Cache, atau antarmuka File. API penyimpanan ini berfungsi 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 di bagian Application > Storage.