Aplikasi web modern tidak lagi hanya menyimpan preferensi kecil. Editor dokumen, pembaca email, katalog offline, dan aplikasi media dapat menyimpan banyak data melalui IndexedDB, Cache API, serta Origin Private File System (OPFS). Masalahnya, data dari berbagai fitur sering berada dalam ruang penyimpanan origin yang sama. Ketika ruang menipis, pengelolaan dan pembersihan data bisa menjadi sulit. Storage Buckets API menawarkan pendekatan untuk memisahkan data browser ke dalam beberapa bucket bernama, sehingga aplikasi dapat mengelola kelompok data dengan lebih terarah.
Apa itu Storage Buckets API?
Storage Buckets API merupakan proposal platform web yang memungkinkan satu origin membuat beberapa wadah penyimpanan. Setiap bucket dapat memiliki data dan kebijakan penyimpanannya sendiri, alih-alih seluruh data situs diperlakukan sebagai satu kelompok besar. Gagasannya berguna untuk aplikasi yang menyimpan data dengan tingkat kepentingan berbeda: dokumen yang belum tersinkronisasi lebih penting daripada thumbnail atau cache yang dapat dibuat ulang.
Bucket bukanlah penyimpanan cloud dan tidak otomatis menyinkronkan data ke server. Data tetap berada di perangkat pengguna. API ini juga tidak menggantikan IndexedDB atau Cache API; ia menyediakan cara untuk mengelompokkan akses ke mekanisme penyimpanan tersebut.
Mengapa pemisahan data berguna?
- Data penting dan data sementara: draf offline dapat dipisahkan dari cache gambar yang mudah dibuat ulang.
- Pembersihan lebih terarah: aplikasi dapat menghapus bucket tertentu ketika fitur atau akun tidak lagi diperlukan, tanpa sengaja menghapus semua kelompok data aplikasi.
- Pemantauan kuota: aplikasi dapat memeriksa perkiraan pemakaian bucket dan mengurangi unduhan atau cache sebelum penyimpanan mencapai batas.
- Pemisahan fitur atau akun: aplikasi bersama dapat memisahkan data per fitur atau akun pengguna, lalu menghapus kelompok yang sudah tidak relevan.
Manfaat tersebut bukan jaminan bahwa browser tidak akan pernah menghapus data. Kebijakan penyimpanan tetap dipengaruhi browser, ruang perangkat, dan keputusan pengguna.
Contoh penggunaan dasar
API ini perlu diuji pada browser sasaran terlebih dahulu. Contoh berikut memeriksa dukungan fitur sebelum membuka bucket untuk cache yang dapat dibuat ulang.
async function openMediaCacheBucket() {
if (!('storageBuckets' in navigator)) {
return null; // Gunakan fallback penyimpanan biasa.
}
try {
return await navigator.storageBuckets.open('media-cache', {
persisted: false,
quota: 50 * 1024 * 1024
});
} catch (error) {
console.error('Bucket tidak dapat dibuka:', error);
return null;
}
}
const bucket = await openMediaCacheBucket();
if (bucket) {
const cache = await bucket.caches.open('images-v1');
const usage = await bucket.estimate();
console.log('Perkiraan penggunaan:', usage.usage, 'byte');
}Contoh ini hanya menunjukkan pola dasar. Nilai kuota yang diminta merupakan petunjuk bagi browser, bukan alokasi yang dijamin. Kode produksi juga perlu menangani kegagalan membuka cache, menghapus data lama, dan menyediakan jalur alternatif ketika API tidak tersedia.
Persistensi, kuota, dan masa berlaku
Proposal Storage Buckets mencakup kebijakan seperti persistensi, batas kuota, dan waktu kedaluwarsa. Kebijakan yang diminta saat bucket dibuat tidak selalu diterima persis seperti permintaan aplikasi. Karena itu, aplikasi sebaiknya membaca kembali status yang tersedia dan tetap menganggap penyimpanan lokal dapat hilang.
Untuk data yang dapat diunduh ulang, gunakan pendekatan best-effort dan siapkan mekanisme regenerasi. Untuk draf yang belum tersinkronisasi, pertimbangkan meminta persistensi bila didukung, tetapi jangan menganggap permintaan itu pasti disetujui. Simpan status sinkronisasi dengan jelas agar aplikasi dapat memberi tahu pengguna sebelum menghapus atau mengganti data yang belum aman di server.
Dukungan browser dan strategi fallback
Storage Buckets API masih berstatus eksperimental dan dukungannya tidak merata. Data kompatibilitas MDN mencatat implementasi Chromium mulai versi 122, sementara Firefox dan Safari belum mencatat dukungan pada data yang diperiksa. Versi, platform, dan kebijakan browser dapat berubah, jadi jangan menjadikan API ini satu-satunya jalur penyimpanan aplikasi.
Gunakan pemeriksaan fitur seperti 'storageBuckets' in navigator, uji perilaku pada perangkat nyata, dan pertahankan fallback berbasis IndexedDB atau Cache API standar. Jika fallback tidak dapat memisahkan data dengan cara yang sama, rancang pembersihan dan migrasi secara eksplisit agar pengguna tidak kehilangan data penting.
Checklist sebelum diterapkan
- Kelompokkan data berdasarkan nilai dan kemampuan untuk dibuat ulang.
- Pastikan setiap bucket memiliki nama stabil dan tujuan yang jelas.
- Ukur pemakaian, tangani kuota terlampaui, dan uji kondisi penyimpanan hampir penuh.
- Bedakan data yang sudah tersinkronisasi dari draf lokal yang belum tersinkronisasi.
- Uji penghapusan bucket, logout, pergantian akun, dan pemulihan setelah browser menutup tab atau proses.
- Dokumentasikan fallback untuk browser yang belum mendukung API.
Strategi Migrasi Tanpa Kehilangan Data
Saat mengadopsi pemisahan bucket, jangan langsung memindahkan semua data penting dalam satu perubahan besar. Kelompokkan data lebih dahulu: data yang dapat diunduh ulang, data lokal yang belum tersinkronisasi, dan data yang menjadi sumber kebenaran bagi pengguna. Mulailah dari cache yang aman dibuat ulang, kemudian ukur dampaknya sebelum memindahkan data yang lebih penting. Pastikan aplikasi dapat membaca data lama selama masa transisi apabila browser atau versi aplikasi belum mendukung bucket baru.
Perhatikan juga proses logout, penghapusan akun, dan pergantian pengguna pada satu perangkat. Penghapusan data milik satu akun tidak boleh menghapus draf pengguna lain, sementara cache yang tidak sensitif perlu punya kebijakan pembersihan yang jelas. Buat pencatatan migrasi yang tidak memuat isi data sensitif, dan sediakan pemulihan jika proses berhenti di tengah jalan. Sebelum diluncurkan luas, uji keadaan ruang penyimpanan hampir penuh, browser ditutup mendadak, serta pembaruan aplikasi ketika ada perubahan pada struktur data.
Kesimpulan
Storage Buckets API menawarkan cara yang lebih terstruktur untuk mengelola data lokal aplikasi web, terutama ketika cache, konten offline, dan draf penting memiliki kebutuhan berbeda. Namun, karena dukungannya masih terbatas dan kebijakan bucket tidak selalu dijamin, gunakan API ini sebagai peningkatan bertahap, bukan sebagai satu-satunya fondasi penyimpanan. Untuk memahami detail rancangan dan batasannya, baca penjelasan Storage Buckets dari WICG serta dokumentasi Storage API di MDN.
Baca juga: Service Worker pada PWA: Cache dan Mode Offline.
PENGALAMAN BARU Coba tampilan baru Penasaran dengan pengalaman membaca Nazuaf versi modern? Coba tampilan baru yang dirancang agar nyaman dibaca dari ponsel dan pc. Buka versi modern dan lanjutkan membaca artikel ini. Jelajahi tampilan baru Nazuaf versi modern · Ketuk kartu untuk mencoba