Almacenamiento local HTML5 versus almacenamiento de sesión

562

Además de no ser persistente y tener un alcance solo en la ventana actual, ¿hay algún beneficio (rendimiento, acceso a datos, etc.) en el almacenamiento de sesión sobre el almacenamiento local?

jpkeisala
fuente
15
@robert - Creo que eres incorrecto. Desde w3.org/TR/webstorage sessionStorage se limita al "contexto de navegación de nivel superior", lo que significa que es único para cada pestaña / ventana del navegador. Sin embargo, localStorage tiene un alcance del origen, lo que significa que se comparte en todas las páginas del mismo origen.
broofa
55
Re: Rendimiento jsperf.com/localstorage-vs-sessionstorage
colllin

Respuestas:

813

localStorage y sessionStorage extienden el almacenamiento . No hay diferencia entre ellos excepto por la intención de "no persistencia" de sessionStorage.

Es decir, los datos almacenados en localStorage persisten hasta que se eliminen explícitamente . Los cambios realizados se guardan y están disponibles para todas las visitas actuales y futuras al sitio.

Para sessionStorage, los cambios solo están disponibles por pestaña. Los cambios realizados se guardan y están disponibles para la página actual en esa pestaña hasta que se cierra. Una vez que está cerrado, los datos almacenados se eliminan.

tcooc
fuente
17
hay una discusión más amplia que puede ser útil aquí: stackoverflow.com/questions/19867599/…
Ed Sykes
13
si guarda algunos datos en almacenamiento en http, no podrá recuperarlos en https
Mark Thien
Probé esto en Chrome v41.x y parece que la declaración anterior sobre https no es cierta: localStorage conserva sus datos almacenados.
CCC
36
SessionStorage sobrevive a la recarga y restauración de la página, pero al abrir una nueva pestaña / ventana se iniciará una nueva sesión.
Patrick
160

La única diferencia es que localStorage tiene un tiempo de vencimiento diferente, sessionStoragesolo será accesible mientras esté abierta la ventana que la creó.
localStoragedura hasta que lo elimine o el usuario lo elimine.
Digamos que usted quiere guardar un nombre de usuario y la contraseña de inicio de sesión que se desea utilizar sessionStoragemás localStoragepor razones de seguridad (es decir. Otra persona que acceda a su cuenta en un momento posterior).
Pero si desea guardar la configuración de un usuario en su máquina, probablemente lo desee localStorage. Considerándolo todo:

localStorage- Uso para uso a largo plazo.
sessionStorage- Úselo cuando necesite almacenar algo que cambie o algo temporal

AlcaldeMonty
fuente
103

Pocos otros puntos que podrían ser útiles para comprender las diferencias entre el almacenamiento local y de sesión

  1. El almacenamiento local y el almacenamiento de sesión tienen un alcance para el origen del documento, por lo que

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

    Todas las URL anteriores no compartirán el mismo almacenamiento. (Observe que la ruta de la página web no afecta el almacenamiento web)

  2. El almacenamiento de sesión es diferente incluso para el documento con la misma política de origen abierta en pestañas diferentes, por lo que la misma página web abierta en dos pestañas diferentes no puede compartir el mismo almacenamiento de sesión.

  3. Tanto el almacenamiento local como el de sesión también están definidos por proveedores de navegadores . Por lo tanto, Chrome o FF no pueden leer los datos de almacenamiento guardados por IE.

Espero que esto ayude.

functionoid
fuente
3
No, la misma sesión de almacenamiento compartido entre http y https pero localStorage no.
Shahdat el
55
Si configura sessionStorage en origen https primero, estará disponible en http pero si crea sessionStore en http, no estará disponible en http
Shahdat
44
@Shahdat, ¿quiso decir "entonces no estará disponible en https" (observe los s)?
Daniel Werner
3
@DanielWerner sí, si crea sessionStore en http, entonces no estará disponible en https.
Shahdat
28

La principal diferencia entre localStoragey sessionStoragees que sessionStoragees única por pestaña. Si cierra la pestaña, sessionStoragese elimina, localStorageno lo hace. Además, no puede comunicarse entre pestañas :)

Otra diferencia sutil es que, por ejemplo, en Safari (8.0.3) localStoragetiene un límite de 2551 k caracteres pero sessionStoragetiene almacenamiento ilimitado

En Chrome (v43) ambos localStoragey sessionStorageestán limitados a 5101 k caracteres (no hay diferencia entre el modo normal / incógnito)

Por tanto Firefox localStoragey sessionStorageestán limitados a 5.120 caracteres (k hay diferencia entre el modo normal / privado)

No hay diferencia en velocidad alguna :)

También hay un problema con Mobile Safari y Mobile Chrome, Private Mode Safari y Chrome tienen un espacio máximo de 0 KB

Eek
fuente
1
limitado a 5101 k caracteres? entonces ... 5.101 millones de caracteres?
Zze
@Zze Sí, 1 carácter suele ser 1 byte, por lo tanto, 5 millones de caracteres equivalen a 5Mb de almacenamiento.
Basim Khajwal
@BasimKhajwal Eso es 5MB. Bytes, no bits.
Yeti
¿Puedes agregar una fuente a lo que has mencionado?
Mukus
@Mukus, no hay fuente, realicé pruebas por mí mismo y tuve un problema con Private Mode Safari por tener localStorage pero no tener espacio allí y mi polyfill no se activó ya que localStorage existía, pero el script falló porque no se pudo almacenar cualquier cosa ahí. También puede probar con esta herramienta: dev-test.nemikor.com/web-storage/support-test
Eek
17

sessionStoragees lo mismo que localStorage, excepto que almacena los datos para una sola sesión, y se eliminará cuando el usuario cierre la ventana del navegador que lo creó.

Ahmad Santarissy
fuente
10

En cuanto al rendimiento, mis mediciones (crudas) no encontraron diferencias en 1000 escrituras y lecturas

En cuanto a la seguridad, intuitivamente parecería que localStore podría cerrarse antes que sessionStore, pero no tiene evidencia concreta, ¿tal vez alguien más lo haga?

funcional sabio, concuerde con digitalFresh arriba

cc joven
fuente
1
con respecto al rendimiento de carga de la página: Ambos, sessionStorage y localStorage se inician y se completan fuera del ciclo de carga de página-render. Por lo tanto, el costo del tiempo de carga de la página inicial no se puede medir desde el navegador.
Mirko
6

El almacenamiento de la sesión y el almacenamiento local tienen el mismo comportamiento, excepto que el almacenamiento local almacenará los datos hasta que el usuario elimine el caché y las cookies y los datos de almacenamiento de la sesión se retendrán en el sistema hasta que cerremos la sesión i, e hasta que cerremos la ventana de almacenamiento de sesión creada.

Bhargavi
fuente
5

La ventaja del almacenamiento de la sesión sobre el almacenamiento local, en mi opinión, es que tiene una capacidad ilimitada en Firefox y no durará más que la sesión. (Por supuesto, depende de cuál sea su objetivo).

avvett
fuente
2

Almacenamiento local: mantiene los datos de información del usuario sin fecha de caducidad. Estos datos no se eliminarán cuando el usuario cierre las ventanas del navegador, estarán disponibles por día, semana, mes y año.

//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

Almacenamiento de sesión: es igual que la fecha de almacenamiento local, excepto que eliminará todas las ventanas cuando un usuario web cierre las ventanas del navegador.

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

Leer más Haga clic

Srikrushna
fuente
2
  • sessionStorage mantiene un área de almacenamiento separada para cada origen dado que está disponible durante la sesión de la página (siempre que el navegador esté abierto, incluidas las recargas y restauraciones de la página)

  • localStorage hace lo mismo, pero persiste incluso cuando el navegador se cierra y se vuelve a abrir.

Tomé esto de https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

Linda Gutiérrez Montoya
fuente