2012-03-30 22 views
81

Depende en gran medida de localStorage por un complemento que estoy escribiendo. Toda la configuración del usuario está almacenada en ella. Algunas configuraciones requieren que el usuario escriba las expresiones regulares y estarían tristes si sus reglas de expresiones regulares se han ido en algún momento. Así que ahora me pregunto cuán persistente es el localStorage.¿Qué tan persistente es localStorage?

De the specs:

Los agentes de usuario deben expirar datos de las áreas de almacenamiento local sólo por razones de seguridad o cuando así lo solicite el usuario.

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

+0

Teniendo en cuenta que los navegadores deciden qué constituye una "razón de seguridad", en un mundo ideal no asumirías que durará mucho tiempo. Sin embargo, es seguro suponer que persiste hasta que un usuario lo vacía explícitamente. – Corbin

+1

Solo una advertencia al usar localStorage: Parece que no funciona de manera confiable en Firefox 39, 38 y 37 (no verificamos nada anterior). En aproximadamente el 1% de las máquinas de nuestros usuarios, localStorage se pierde a veces en medio de la navegación de nuestro sitio, mientras que la cookie de sesión se conserva. Me parece como un insecto. – Andreas

+1

@PeeHaa, no solo * funciona * como las cookies, sino que ** está legalmente definido como "cookies" ** también. De hecho, la información de almacenamiento se muestra junto con otras cookies en la url 'chrome: settings/cookies' – Pacerier

Respuesta

57

Mozilla implementa como las galletas:

almacenamiento DOM se puede eliminar a través de "Herramientas -> Limpiar el historial reciente -> Cookies" cuando intervalo de tiempo se "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 vencimiento quedan en manos del usuario. En el caso de Mozilla, la mayoría de esas reglas se heredan de las reglas de caducidad relacionadas con las cookies. Debido a esto, probablemente pueda esperar que la mayoría de sus datos de almacenamiento DOM duren al menos durante un tiempo significativo.

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

Chrome lo implementa como caché:

LocalStorage es No Almacenamiento seguro

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

Persistencia

en el disco hasta eliminado por el usuario (borrar la memoria caché) o mediante la aplicación

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


En cuanto a un "sustituto de la cookie", not entirely

Las cookies y el almacenamiento local realmente sirven para fines diferentes. Las cookies son principalmente para leer en el lado del servidor, LocalStorage solo se puede leer en el lado del cliente. Entonces, la pregunta es, en su aplicación, ¿quién necesita esta información, el cliente o el servidor?

13

Básicamente, debe no dependen en gran medida de almacenamiento local.

El almacenamiento local, junto con el almacenamiento de sesión, pretende ser un reemplazo de las cookies, definiendo una API más uniforme. Existen algunas diferencias con respecto a las cookies:

  • Si bien las cookies son accesibles desde el lado del cliente y del servidor, en particular, solo se puede acceder al almacenamiento web en general y al almacenamiento local desde el lado del cliente.
  • Capacidad mejorada (oficial para cookies de 4 kbytes) a más de 5Mb por dominio (Firefox, Google Chrome y Opera y 10MB en IE).

Así , suposición es correcta.

+1

+1 - esta es la razón por la que utilizaría el almacenamiento local como caché y haría una copia de seguridad de los datos del usuario en el servidor. (Por supuesto, eso supone que hay un mecanismo de inicio de sesión en su lugar.) – josh3736

+0

'Básicamente, no debe depender mucho del almacenamiento local. ... ¡¡¡Absolutamente !! –

6

Una cosa a tener en cuenta acerca del uso del almacenamiento local. Es muy específico del navegador. Si almacena datos con Firefox, no estarán disponibles en Chrome, es decir, etc. Además, en cuanto a la eliminación de cookies y sesiones, me he dado cuenta de que también es específico del navegador para saber si el almacenamiento local está despejado o no. Vería los detalles mucho si realmente está pensando en confiar en el almacenamiento local de una aplicación.

+8

¿No es esto también cierto con las cookies? –

+2

Esto es cierto también para las cookies. –

+0

No, esto no es necesariamente cierto para las cookies: en OSX, las aplicaciones que usan Webkit parecen compartir cookies en mi experiencia. Aunque puedo estar malinterpretando los efectos. –

4

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

Desde el Dec 2011 Web Storage Spec Candidate Recommendation,

(almacenamiento local) está diseñado para el almacenamiento que abarca varias ventanas, y dura más allá de la sesión actual. En particular, las aplicaciones web pueden desear almacenar megabytes de datos de usuario, como documentos enteros escritos por el usuario o el buzón de un usuario, en el lado del cliente por razones de rendimiento .

Como los datos del lado del cliente - que es tan persistente como cualquier de datos 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., al igual que CUALQUIER dato del lado del cliente.

2

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

+2

Creo que esto es cierto para WebViews pero no para Safari. – Trott