Archiviazione locale HTML5 vs. archiviazione di sessione


562

Oltre ad essere non persistente e limitato solo alla finestra corrente, ci sono dei vantaggi (prestazioni, accesso ai dati, ecc.) All'archiviazione delle sessioni sull'archiviazione locale?


15
@robert - Credo che tu sia errato. Da w3.org/TR/webstorage sessionStorage è impostato sul "contesto di navigazione di livello superiore", il che significa che è unico per ogni scheda / finestra del browser. localStorage ha come ambito l'origine, tuttavia, il che significa che è condiviso su tutte le pagine sulla stessa origine.
broofa,


Risposte:


813

localStorage e sessionStorage estendono entrambi l' archiviazione . Non vi è alcuna differenza tra loro ad eccezione della prevista "non persistenza" di sessionStorage.

Cioè, i dati memorizzati localStorage persistono fino a quando non vengono esplicitamente eliminati . Le modifiche apportate vengono salvate e disponibili per tutte le visite attuali e future al sito.

Per sessionStorage, le modifiche sono disponibili solo per scheda. Le modifiche apportate vengono salvate e disponibili per la pagina corrente in quella scheda fino alla sua chiusura. Una volta chiuso, i dati memorizzati vengono eliminati.


17
c'è una discussione più ampia che potresti trovare utile qui: stackoverflow.com/questions/19867599/…
Ed Sykes,

13
se salvi alcuni dati in archivio sotto http, non sarai in grado di recuperarli su https
Mark Thien

ho provato questo su Chrome v41.x e sembra che la precedente dichiarazione su https non sia vera: localStorage conserva i suoi dati memorizzati.
CCC,

36
SessionStorage sopravvive a ricariche e ripristini di pagine, ma l'apertura di una nuova scheda / finestra avvia una nuova sessione.
Patrick,

160

L'unica differenza è che localStorage ha un tempo di scadenza diverso, sessionStoragesarà accessibile solo mentre è aperta la finestra che lo ha creato.
localStoragedura fino a quando non lo elimini o l'utente lo elimina.
Diciamo che si voleva salvare un nome utente e la password che si desidera utilizzare sessionStoragenel corso localStorageper motivi di sicurezza (ad es. Una persona accedere al loro conto in un secondo momento).
Ma se volessi salvare le impostazioni di un utente sul suo computer, probabilmente lo vorresti localStorage. Tutto sommato:

localStorage- utilizzare per un uso a lungo termine.
sessionStorage- utilizzare quando è necessario conservare qualcosa che cambia o qualcosa di temporaneo


103

Pochi altri punti che potrebbero essere utili per comprendere le differenze tra archiviazione locale e sessione

  1. Sia l'archiviazione locale che l'archiviazione di sessione hanno come ambito l'origine del documento, quindi

    https://mydomain.com/
    http://mydomain.com/
    https://mydomain.com:8080/

    Tutti gli URL di cui sopra non condivideranno lo stesso spazio di archiviazione. (Il percorso di avviso della pagina Web non influisce sulla memoria Web)

  2. L'archiviazione della sessione è diversa anche per il documento con lo stesso criterio di origine aperto in schede diverse, quindi la stessa pagina Web aperta in due schede diverse non può condividere la stessa archiviazione di sessione.

  3. Sia l'archiviazione locale che quella di sessione sono gestite anche dai fornitori di browser . Pertanto i dati di archiviazione salvati da IE non possono essere letti da Chrome o FF.

Spero che sia di aiuto.


3
No, stessa sessione Condivisione archivio tra http e https ma localStorage no.
Shahdat,

5
Se imposti sessionStorage in origine https per primo, sarà disponibile in http ma se crei sessionStore in http allora non sarà disponibile in http
Shahdat,

4
@Shahdat, volevi dire "allora non sarà disponibile in https" (noti i)?
Daniel Werner,

3
@DanielWerner sì, se crei sessionStore in http allora non sarà disponibile in https.
Shahdat,

28

La differenza principale tra localStoragee sessionStorageè che sessionStorageè unica per scheda. Se si chiude la scheda sessionStorageviene eliminata, localStoragenon lo fa. Inoltre non è possibile comunicare tra le schede :)

Un'altra sottile differenza è che ad esempio su Safari (8.0.3) localStorageha un limite di 2551 k caratteri ma sessionStorageha una memoria illimitata

Su Chrome (v43) entrambi localStoragee sessionStoragesono limitati a 5101 k caratteri (nessuna differenza tra la modalità normale / in incognito)

Su Firefox entrambi localStoragee sessionStoragesono limitati a 5120 k caratteri (nessuna differenza tra la modalità normale / privata)

Nessuna differenza di velocità :)

C'è anche un problema con Mobile Safari e Mobile Chrome, Safari in modalità privata e Chrome hanno uno spazio massimo di 0 KB


1
limitato a 5101 k caratteri? quindi .. 5.101 milioni di caratteri?
Zze,

@Zze Sì, 1 carattere è in genere 1 byte, quindi 5 milioni di caratteri hanno una memoria di 5 MB.
Basim Khajwal,

@BasimKhajwal Questo è 5 MB. Byte, non bit.
Yeti,

Potete per favore aggiungere la fonte a ciò che avete menzionato?
Mukus,

@Mukus, non c'è fonte, ho eseguito i test da solo e ho avuto un problema con Safari in modalità privata per avere localStorage ma non avendo spazio lì e il mio polyfill non si sarebbe attivato poiché esisteva localStorage, ma lo script non è riuscito poiché non è stato possibile archiviare niente lì. Puoi anche provare usando questo strumento - dev-test.nemikor.com/web-storage/support-test
Eek

17

sessionStorageè lo stesso localStorage, tranne per il fatto che memorizza i dati per una sola sessione e verrà rimosso quando l'utente chiude la finestra del browser che l'ha creato.


10

per quanto riguarda le prestazioni, le mie misurazioni (grossolane) non hanno riscontrato differenze su 1000 scritture e letture

per quanto riguarda la sicurezza, intuitivamente sembrerebbe che il localStore possa essere chiuso prima del sessionStore, ma non ha prove concrete - forse qualcun altro lo fa?

dal punto di vista funzionale, concorda con digitalFresh sopra


1
per quanto riguarda le prestazioni del caricamento della pagina: sia sessionStorage che localStorage vengono avviati e popolati al di fuori del ciclo di rendering del caricamento della pagina. Pertanto il pedaggio sul tempo di caricamento della pagina iniziale non è misurabile all'interno del browser.
Mirko,

6

L'archiviazione della sessione e l'archiviazione locale hanno lo stesso comportamento, tranne uno che è l'archiviazione locale memorizzerà i dati fino a quando, a meno che l'utente non elimini la cache, i cookie e i dati di archiviazione della sessione rimarranno nel sistema fino alla chiusura della sessione i, e fino alla chiusura la finestra di archiviazione della sessione creata.


5

Il vantaggio dell'archiviazione di sessione rispetto all'archiviazione locale, a mio avviso, è che ha una capacità illimitata in Firefox e non persisterà più a lungo della sessione. (Naturalmente dipende da quale sia il tuo obiettivo.)


2

Archiviazione locale: mantiene i dati delle informazioni dell'utente conservati senza data di scadenza che non verranno eliminati quando l'utente chiuderà le finestre del browser e sarà disponibile per giorno, settimana, mese e anno.

//Set the value in a local storage object
localStorage.setItem('name', myName);

//Get the value from storage object
localStorage.getItem('name');

//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege

Archiviazione sessione: è uguale alla data di archiviazione locale tranne per l'eliminazione di tutte le finestre quando le finestre del browser vengono chiuse da un utente Web.

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

Ulteriori informazioni Fare clic


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.