Quanto è persistente localStorage?


100

Dipendo molto da localStorage per un plugin che sto scrivendo. Tutte le impostazioni dell'utente vengono memorizzate in esso. Alcune impostazioni richiedono all'utente la scrittura di regex e sarebbero tristi se le loro regole regex fossero andate a un certo punto. Quindi ora mi chiedo quanto sia persistente localStorage.

Dalle specifiche :

I programmi utente dovrebbero far scadere i dati dalle aree di archiviazione locale solo per motivi di sicurezza o quando richiesto dall'utente.

Quanto sopra sembra che funzioni proprio come i cookie sul lato client. Ad esempio, quando l'utente cancella tutti i dati del browser (cronologia, cookie, cache ecc.), Anche localStorage verrà troncato. Questa ipotesi è corretta?


1
Considerando che i browser possono decidere cosa costituisce un "motivo di sicurezza", in un mondo ideale non si presume che durerà molto a lungo. Tuttavia, è probabilmente lecito ritenere che persista fino a quando un utente non lo scarica esplicitamente.
Corbin

1
Solo un avvertimento quando si utilizza localStorage: non sembra funzionare in modo affidabile in Firefox 39, 38 e 37 (non abbiamo controllato nulla di più vecchio). Su circa l'1% delle macchine dei nostri utenti, localStorage si perde a volte durante la navigazione nel nostro sito, mentre il cookie di sessione viene conservato. Mi sembra un insetto.
Andreas

1
@PeeHaa, non funziona semplicemente come i cookie, ma sono anche legalmente definiti "cookie" . In effetti, le informazioni di archiviazione vengono mostrate accanto ad altri cookie chrome:settings/cookies
nell'URL

Risposte:


69

Mozilla lo implementa come i cookie:

L'archiviazione DOM può essere cancellata tramite "Strumenti -> Cancella cronologia recente -> Cookie" quando l'intervallo di tempo è "Tutto" (tramite nsICookieManager :: removeAll)

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

In DOM Storage non è possibile specificare un periodo di scadenza per nessuno dei tuoi dati. Tutte le regole di scadenza sono lasciate all'utente. Nel caso di Mozilla, la maggior parte di queste regole viene ereditata dalle regole di scadenza relative ai cookie. Per questo motivo puoi probabilmente aspettarti che la maggior parte dei tuoi dati di archiviazione DOM duri almeno per una quantità di tempo significativa.

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

Chrome lo implementa come la cache:

LocalStorage non è un archivio sicuro

L'archiviazione locale HTML5 salva i dati non crittografati sotto forma di stringa nella normale cache del browser .

Persistenza

Su disco fino a quando non viene eliminato dall'utente (elimina cache) o dall'app

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


Per quanto riguarda un "sostituto del cookie", non del tutto

I cookie e l'archiviazione locale servono davvero a scopi diversi. I cookie sono principalmente per la lettura lato server, LocalStorage può essere letto solo lato client. Quindi la domanda è, nella tua app, chi ha bisogno di questi dati: il client o il server?


1
Penso che questo link MDN sia stato spiegato più chiaramente.
Bo Lu

17

In sostanza, si dovrebbe non dipenderà da Local Storage.

Local Storage, insieme a Session Storage, mira a sostituire i cookie, definendo un'API più coerente. Ci sono alcune differenze rispetto ai cookie:

  • Mentre i cookie sono accessibili sia dal lato client che dal lato server, Web Storage, in generale, e Local Storage, in particolare, sono accessibili solo dal lato client.
  • Capacità migliorata (quella ufficiale per i cookie è di 4 KB) a oltre 5 MB per dominio (Firefox, Google Chrome e Opera e 10 MB in IE).

Quindi , la tua ipotesi è corretta.


1
+1: questo è il motivo per cui utilizzerei l'archiviazione locale come cache e il backup dei dati utente sul server. (Ovviamente, si presume che sia
attivo

2
Basically, you should not heavily depend on Local Storage.... Assolutamente !!
Tenali Raman

7

Una cosa da notare sull'utilizzo dell'archiviazione locale. È molto specifico per il browser. Se memorizzi i dati con Firefox, non saranno disponibili in Chrome o ie ecc. Inoltre, per quanto riguarda la cancellazione di cookie e sessioni, ho notato che è anche specifico del browser se la memoria locale viene cancellata o meno. Esaminerei molto i dettagli se hai davvero intenzione di fare affidamento sull'archiviazione locale per un'app.


14
Non è vero anche con i cookie?
Jeffrey Sweeney

3
Questo vale anche per i cookie.
Moshe L

No, questo non è necessariamente vero per i cookie: su OSX, le app che utilizzano Webkit sembrano condividere i cookie nella mia esperienza. Anche se potrei interpretare male gli effetti.
Thomas Tempelmann

D'altra parte, sta scrivendo un plugin che, presumo, sia specifico del browser.
GuyT

5

L'archiviazione locale è progettata per essere un archivio di dati affidabile e persistente su un client. Non è concepito come un "cookie migliore": quella funzione è progettata per essere soddisfatta da Session Storage.

Dalla raccomandazione del candidato alle specifiche di archiviazione Web del dicembre 2011 ,

(Archiviazione locale) è progettato per l'archiviazione che si estende su più finestre e dura oltre la sessione corrente. In particolare, le applicazioni Web potrebbero voler memorizzare megabyte di dati utente, come interi documenti creati dall'utente o la cassetta postale di un utente, sul lato client per motivi di prestazioni.

Come dati lato client: sono persistenti come qualsiasi dato lato client, entro i limiti di dimensione implementati dal browser. Gli utenti possono cancellarlo in qualsiasi momento, aprirlo in un editor di testo e modificare ecc., Proprio come QUALSIASI dato lato client.


1
Forse questo è cambiato rispetto al tuo post originale 8 anni fa, ma l'archiviazione locale può essere molto utilizzata in sostituzione dei cookie (dove è necessario l'accesso solo lato client). Impossibile salvare la sessione. L'archiviazione della sessione viene eliminata non appena il browser viene chiuso.
Brad

3

Se stai usando localStorage per un'app iOS, fai molta attenzione. L'ultima versione di iOS (5.1 dalla parte superiore della mia testa) ha spostato i dati localstorage e localdb in una parte della cache che viene regolarmente cancellata, cioè per niente persistente. Non posso ancora dire se si tratta di un bug o di un cambiamento di politica.


2
Credo che questo sia vero per WebViews ma non per Safari.
Trott
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.