¿Durante cuánto tiempo están disponibles los datos almacenados en localStorage (como parte del almacenamiento DOM en HTML5)? ¿Puedo establecer un tiempo de vencimiento para los datos que coloco en localStorage?
javascript
html
local-storage
usuario280427
fuente
fuente
Respuestas:
No es posible especificar la caducidad. Depende completamente del usuario.
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
Por supuesto, es posible que algo que su aplicación almacena en el cliente no esté allí más tarde. El usuario puede deshacerse explícitamente del almacenamiento local, o el navegador puede encontrarse con consideraciones de espacio. Es bueno programar a la defensiva. En general, sin embargo, las cosas permanecen "para siempre" según alguna definición práctica de esa palabra.
editar : obviamente, su propia aplicación puede eliminar cosas activamente si decide que es demasiado antigua. Es decir, puede incluir explícitamente algún tipo de marca de tiempo en lo que ha guardado, y luego usarlo más adelante para decidir si la información se debe eliminar o no.
fuente
Sugeriría almacenar la marca de tiempo en el objeto que almacene en el localStorage
Puede analizar el objeto, obtener la marca de tiempo y comparar con la Fecha actual y, si es necesario, actualizar el valor del objeto.
fuente
settimout
por cada 5 segundos) o por cada solicitud que el cliente envíe al servidor?Puedes usar lscache . Se encarga de esto automáticamente, incluidas las instancias donde el tamaño de almacenamiento excede el límite. Si eso sucede, comienza a podar los elementos más cercanos a su vencimiento especificado.
De la
readme
:Esta es la única diferencia real entre los métodos de almacenamiento regulares. Obtener, eliminar, etc. funcionan igual.
Si no necesita tanta funcionalidad, simplemente puede almacenar una marca de tiempo con el valor (a través de JSON) y verificar que caduque.
Cabe destacar que hay una buena razón por la cual el almacenamiento local se deja al usuario. Pero, cosas como lscache son útiles cuando necesita almacenar datos extremadamente temporales.
fuente
Brynner Ferreira, ha traído un buen punto: almacenar una clave de hermano donde reside la información de caducidad. De esta manera, si tiene una gran cantidad de claves, o si sus valores son objetos Json grandes , no necesita analizarlos para acceder a la marca de tiempo.
aquí sigue una versión mejorada:
fuente
else
líneaexpires = Math.abs(1000*expires); //make sure it's positive
?getStorage
llamada. Si intenta acceder a la_expiresIn
versión de la clave directamente, la clave se convierte en la..._expiresIn_expiresIn
que, por supuesto, no existe, por lo que elimina la..._expiresIn
clave original , y la próxima vez que acceda a la clave original, la clave..._expiresIn
no existe y elimina el original. llave. Sugeriría una trampa para eso cuando me topé con esto en uno de mis proyectos.if(key.indexOf('_expiresIn') > -1) { return localStorage.getItem(key); }
Si bien el almacenamiento local no proporciona un mecanismo de caducidad, las cookies sí. Simplemente emparejar una clave de almacenamiento local con una cookie proporciona una manera fácil de garantizar que el almacenamiento local se pueda actualizar con los mismos parámetros de caducidad que una cookie.
Ejemplo en jQuery:
Este ejemplo establece que una cookie con el parámetro predeterminado caduque cuando se cierra el navegador. Por lo tanto, cuando el navegador se cierra y se vuelve a abrir, una llamada del lado del servidor actualiza el almacén de datos local para your_data.
Tenga en cuenta que esto no es exactamente lo mismo que eliminar el almacén de datos local, sino que está actualizando el almacén de datos local cada vez que caduca la cookie. Sin embargo, si su objetivo principal es poder almacenar más de 4K en el lado del cliente (la limitación para el tamaño de la cookie), este emparejamiento de cookies y almacenamiento local lo ayudará a lograr un mayor tamaño de almacenamiento utilizando los mismos parámetros de caducidad que una cookie .
fuente
haga clic aquí para ver la api
fuente
sessionStorage
no funciona compartir datos entre pestañasEl ciclo de vida es controlado por la aplicación / usuario.
De la norma :
fuente
Del borrador del W3C:
Querrá hacer sus actualizaciones en su horario usando setItem (clave, valor); eso agregará o actualizará la clave dada con los nuevos datos.
fuente
fuente
Si alguien usa jStorage Plugin de jQuery, se puede agregar caducidad con la función setTTL si jStorage plugin
fuente
Si alguien sigue buscando una solución rápida y no quiere dependencias como jquery, etc., escribí una mini lib que agrega caducidad al almacenamiento local / sesión / personalizado, puede encontrarla con la fuente aquí:
https://github.com/RonenNess/ExpiredStorage
fuente
Puedes probar este.
fuente
Solución alternativa con almacenamiento angular y local:
fuente
localforage
.expireTimeInMilliseconds
no es unlocalforage
atributo, sino una variable que he usado para verificar si los datos almacenados deben expirar Verifique laget
definición de la función en mi ejemplo.localforage
no es la clase de ayudante ligera que esperabaEl enfoque de @ sebarmeli es el mejor en mi opinión, pero si solo desea que los datos persistan durante la vida de una sesión, entonces
sessionStorage
probablemente sea una mejor opción:MDN: sessionStorage
fuente
En beneficio de los buscadores:
Al igual que Fernando, no quería agregar una carga de json cuando los valores almacenados eran simples. Solo necesitaba rastrear cierta interacción de la interfaz de usuario y mantener los datos relevantes (por ejemplo, cómo un usuario utilizó un sitio de comercio electrónico antes de pagar).
Esto no cumplirá con los criterios de todos, pero esperamos que sea un inicio rápido de copiar + pegar para alguien y guardar agregando otra lib.
NOTA: Esto no sería bueno si necesita recuperar los elementos individualmente.
fuente
Si está familiarizado con el objeto locaStorage de los navegadores , sabe que no hay ninguna disposición para proporcionar un tiempo de caducidad. Sin embargo, podemos usar Javascript para agregar un TTL (Tiempo de vida) para invalidar elementos en locaStorage después de un cierto período de tiempo.
fuente