Berapa lama data disimpan di localStorage (sebagai bagian dari DOM Storage di HTML5) tersedia? Bisakah saya menetapkan waktu kedaluwarsa untuk data yang saya masukkan ke localStorage?
javascript
html
local-storage
pengguna280427
sumber
sumber
Jawaban:
Tidak mungkin menentukan kedaluwarsa. Ini sepenuhnya terserah pengguna.
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
Tentu saja, ada kemungkinan bahwa sesuatu yang disimpan aplikasi Anda pada klien mungkin tidak ada di sana nanti. Pengguna dapat secara eksplisit menyingkirkan penyimpanan lokal, atau browser dapat mengalami pertimbangan ruang. Ini bagus untuk memprogram pertahanan. Namun secara umum hal-hal tetap "selamanya" berdasarkan beberapa definisi praktis dari kata itu.
sunting - jelas, aplikasi Anda sendiri dapat secara aktif menghapus barang-barang jika ia memutuskan sudah terlalu tua. Artinya, Anda dapat secara eksplisit memasukkan semacam stempel waktu dalam apa yang telah Anda simpan, dan kemudian menggunakannya nanti untuk memutuskan apakah informasi harus dibilas atau tidak.
sumber
Saya sarankan untuk menyimpan stempel waktu di objek yang Anda simpan di localStorage
Anda dapat mem-parsing objek, mendapatkan cap waktu dan membandingkannya dengan Tanggal saat ini, dan jika perlu, perbarui nilai objek.
sumber
settimout
Untuk setiap 5 detik) atau untuk setiap permintaan yang dikirim klien ke server?Anda dapat menggunakan lscache . Ini menangani ini untuk Anda secara otomatis, termasuk contoh di mana ukuran penyimpanan melebihi batas. Jika itu terjadi, ia mulai memangkas item yang paling dekat dengan kedaluwarsa yang ditentukan.
Dari
readme
:Ini adalah satu-satunya perbedaan nyata antara metode penyimpanan biasa. Dapatkan, hapus, dll. Pekerjaan yang sama.
Jika Anda tidak membutuhkan fungsionalitas sebanyak itu, Anda cukup menyimpan cap waktu dengan nilai (melalui JSON) dan memeriksanya untuk kedaluwarsa.
Yang perlu diperhatikan, ada alasan bagus mengapa penyimpanan lokal diserahkan kepada pengguna. Tetapi, hal-hal seperti lscache sangat berguna ketika Anda perlu menyimpan data yang sangat sementara.
sumber
Brynner Ferreira, telah membawa poin bagus: menyimpan kunci saudara di mana info kedaluwarsa berada. Dengan cara ini, jika Anda memiliki sejumlah besar kunci, atau jika nilai Anda adalah objek Json besar , Anda tidak perlu menguraikannya untuk mengakses cap waktu.
di sini mengikuti versi yang ditingkatkan:
sumber
else
baris ituexpires = Math.abs(1000*expires); //make sure it's positive
?getStorage
panggilan itu. Jika Anda mencoba mengakses_expiresIn
versi kunci secara langsung, kunci tersebut menjadi..._expiresIn_expiresIn
yang tentu saja tidak ada sehingga menghapus..._expiresIn
kunci asli , maka saat berikutnya Anda mengakses kunci asli, yang..._expiresIn
tidak ada dan menghapus yang asli kunci. Saya akan menyarankan terperangkap untuk itu ketika saya mengalami ini di salah satu proyek saya.if(key.indexOf('_expiresIn') > -1) { return localStorage.getItem(key); }
Meskipun penyimpanan lokal tidak menyediakan mekanisme kedaluwarsa, cookie tetap melakukannya. Cukup memasangkan kunci penyimpanan lokal dengan cookie memberikan cara mudah untuk memastikan bahwa penyimpanan lokal dapat diperbarui dengan parameter kedaluwarsa yang sama seperti cookie.
Contoh di jQuery:
Contoh ini menetapkan cookie dengan parameter default untuk kedaluwarsa ketika browser ditutup. Dengan demikian, ketika browser ditutup dan dibuka kembali, penyimpanan data lokal untuk data_Anda disegarkan oleh panggilan sisi server.
Perhatikan bahwa ini tidak persis sama dengan menghapus penyimpanan data lokal, melainkan memperbarui penyimpanan data lokal setiap kali cookie berakhir. Namun, jika tujuan utama Anda adalah untuk dapat menyimpan lebih dari 4K sisi klien (batasan untuk ukuran cookie), pemasangan cookie ini dan penyimpanan lokal akan membantu Anda mencapai ukuran penyimpanan yang lebih besar menggunakan parameter kedaluwarsa yang sama seperti cookie .
sumber
klik di sini untuk melihat api
sumber
sessionStorage
tidak berfungsi untuk berbagi data di antara tabSiklus hidup dikendalikan oleh aplikasi / pengguna.
Dari standar :
sumber
Dari draft W3C:
Anda akan ingin melakukan pembaruan pada jadwal Anda menggunakan setItem (kunci, nilai); yang akan menambah atau memperbarui kunci yang diberikan dengan data baru.
sumber
sumber
Jika seseorang menggunakan Plugin jStorage dari jQuery, itu dapat ditambahkan kadaluwarsa dengan fungsi setTTL jika plugin jStorage
sumber
Jika ada yang masih mencari solusi cepat dan tidak ingin dependensi seperti jquery dll. Saya menulis lib mini yang menambahkan kedaluwarsa pada penyimpanan lokal / session / custom, Anda dapat menemukannya dengan sumber di sini:
https://github.com/RonenNess/ExpiredStorage
sumber
Anda bisa coba yang ini.
sumber
Penanganan masalah menggunakan sudut dan lokal:
sumber
localforage
.expireTimeInMilliseconds
bukanlocalforage
atribut, tetapi variabel yang saya gunakan untuk memeriksa apakah data yang disimpan perlu kedaluwarsa. Periksaget
definisi fungsi pada contoh saya.localforage
bukan kelas pembantu kecil ringan yang kuharapkan@ Sebarmeli's pendekatan adalah yang terbaik menurut saya, tetapi jika Anda hanya ingin data bertahan selama sesi maka
sessionStorage
mungkin pilihan yang lebih baik:MDN: sessionStorage
sumber
Untuk kepentingan pencari:
Seperti Fernando, saya tidak ingin menambahkan beban json ketika nilai yang disimpan sederhana. Saya hanya perlu melacak beberapa interaksi UI dan menyimpan data yang relevan (misalnya bagaimana pengguna menggunakan situs e-niaga sebelum memeriksa).
Ini tidak akan memenuhi kriteria everyones, tetapi mudah-mudahan akan menjadi copy cepat + tempel starter untuk seseorang dan menyimpan menambahkan lib lain
CATATAN: Ini tidak baik jika Anda perlu mengambil item satu per satu.
sumber
Jika Anda terbiasa dengan objek locaStorage browser , Anda tahu bahwa tidak ada ketentuan untuk memberikan waktu kedaluwarsa. Namun, kita dapat menggunakan Javascript untuk menambahkan TTL (Time to live) untuk membatalkan item di locaStorage setelah periode waktu tertentu berlalu.
sumber