¿Qué tan persistente es localStorage?


Estoy dependiendo en gran medida de localStorage para un plugin que estoy escribiendo. Todas las configuraciones de usuario se almacenan en él. Algunas configuraciones requieren que el usuario escriba expresiones regulares y se sentirían tristes si sus reglas de expresiones regulares desaparecieran en algún momento. Así que ahora me pregunto cuán persistente es el localStorage.

De las especificaciones:

Los agentes de usuario deben caducar los datos de las áreas de almacenamiento locales solo por razones de seguridad o cuando así lo solicite el usuario.

El encima parece que funciona igual que las cookies en el clientside. Es decir, cuando el usuario borra todos los datos del navegador (historial, cookies, caché, etc.), el localStorage también se truncará. ¿Es correcta esta suposición?

Author: hippietrail, 2012-03-30

5 answers

Mozilla lo implementa como cookies:

El almacenamiento DOM se puede borrar a través de "Herramientas -> Borrar Historial reciente -> Cookies" cuando el rango de tiempo es "Todo" (a través de nsICookieManager::removeAll)

Https://developer.mozilla.org/en/DOM/Storage

En el Almacenamiento DOM no es posible especificar un período de caducidad para ninguno de sus datos. Todas las reglas de caducidad se dejan en manos del usuario. En el caso de Mozilla, la mayoría de esas reglas son heredadas de la Reglas de caducidad relacionadas con cookies. Debido a esto, probablemente puede esperar que la mayoría de sus datos de almacenamiento DOM duren al menos por una cantidad significativa de tiempo.

Http://ejohn.org/blog/dom-storage /

Chrome lo implementa como caché:

LocalStorage no es un Almacenamiento seguro

El almacenamiento local HTML5 guarda los datos sin cifrar en forma de cadena en la caché normal del navegador.

Persistencia

En el disco hasta que sea eliminado por el usuario (eliminar caché) o por la aplicación

Https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5Storage


En cuanto a un "reemplazo de la Cookie", no del todo

Las cookies y el almacenamiento local realmente sirven para propósitos diferentes. Las cookies son principalmente para leer en el lado del servidor, localStorage solo se puede leer en el lado del cliente. Así que la pregunta es, en su aplicación, quién necesita estos datos - el cliente o el servidor?

 62
Author: Joseph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:09

Básicamente, debe no depender en gran medida del Almacenamiento local.

El Almacenamiento Local, junto con el Almacenamiento de sesión, pretende ser un reemplazo de las cookies, definiendo una API más consistente. Hay algunas diferencias con respecto a las cookies:

  • Si bien las cookies son accesibles tanto desde el lado del cliente como del servidor, el Almacenamiento Web, en general, y el Almacenamiento Local, en particular, solo son accesibles desde el lado del cliente.
  • Capacidad mejorada (oficial para las cookies es de 4 KB) para más más de 5MB por dominio (Firefox, Google Chrome y Opera y 10MB en IE).

Así que , su suposición es correcta.

 15
Author: Daniel Ribeiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-01 10:53:02

Una cosa a tener en cuenta sobre el uso de almacenamiento local. Es muy específico del navegador. Si almacena datos con Firefox, no estará disponible en chrome o ie, etc. También en cuanto a la eliminación de cookies y sesiones, he notado que también es específico del navegador en cuanto a si se borra o no el almacenamiento local. Investigaría mucho los detalles si realmente planea confiar en el almacenamiento local para una aplicación.

 6
Author: Luke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-30 18:16:14

El almacenamiento local está diseñado para ser un almacenamiento confiable y persistente de datos en un cliente. It no está diseñado como una "cookie mejor": esa función está diseñada para ser cumplida por el Almacenamiento de sesiones.

Desde el Dic 2011 Especificación de Almacenamiento Web Candidato Recomendación ,

(Almacenamiento local) está diseñado para almacenamiento que abarca varias ventanas, y dura más allá del actual período de sesiones. En particular, las aplicaciones web es posible que desee almacenar megabytes de datos de usuario, como entero documentos creados por el usuario o el buzón de correo de un usuario, en el lado del cliente para razones de rendimiento.

Como datos del lado del cliente: es tan persistente como cualquier dato del lado del cliente, dentro de los límites de tamaño que implementa el navegador. Los usuarios pueden eliminarlo en cualquier momento, abrirlo en un editor de texto y editar, etc. - como cualquier dato del lado del cliente.

 4
Author: Michael Mullany,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-30 22:08:17

Si está utilizando localStorage para una aplicación iOS, tenga mucho cuidado. La última versión de iOS (5.1 de la parte superior de mi cabeza) ha movido datos localstorage y localdb a una parte de la caché que se borra regularmente, es decir, no en absoluto persistente. Todavía no puedo decir si esto es un error o un cambio de política.

 2
Author: Wytze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-14 10:50:08