Junto con la llegada de HTML5 hemos visto muchas mejoras en la forma cómo guardar datos en el navegador del usuario, tales como localStorage y sessionStorage, viniendo este último a reemplazar a los obsoletos cookies.

Tanto los cookies, como los sessionStorage y localStorage tienen limitaciones en la longitud de data que podemos disponer. Así, los cookies sólo permiten guardar hasta 4095 bytes, mientras que los sessionStorage y los localStorage soportan entre 8MB y 10MB dependiendo del navegador (justo la verdadera belleza de estos), de manera que podemos transferir data entre páginas temporalmente mientras el usuario navega nuestro site (sessionStorage) o podemos dejar data guardada localmente por tiempo indefinido -o hasta que el usuario limpie su navegador- (localStorage).

Ahora, enfoquémonos en la data guardada por tiempo indefinido. Para este efecto podríamos usar Web SQL o Indexed Database, pero sería demasiado si sólo necesitamos datos básicos tales como nombre, apellido, nacionalidad u otros, así que usaremos localStorage.

Conozcamos los métodos para manejar la data con localStorage

Para guardar la data tenemos dos alternativas:

localStorage.setItem('nombre_storage','Mi data guardada');
localStorage.nombre_storage = 'Mi data guardada';

Para leer nuestro storage la temática es similar a la anterior:

console.log(localStorage.getItem('nombre_storage')); // RESPUESTA: 'Mi data guardada'
console.log(localStorage.nombre_storage); // RESPUESTA: 'Mi data guardada'

Para borrar el storage en cuestión:

localStorage.removeItem('nombre_storage');

Para conocer la cantidad de storages guardados en nuestro navegador (todos, incluidos los creados por otros websites):

console.log(localStorage.length);

Para borrar todos los storages (incluidos los creados por otros websites):

localStorage.clear();

Ahora vamos a lo mejor de localStorage: guardar objetos. Como parte del DOM, localStorage es un objeto, pero lamentablemente no permite guardarlos directamente, así que debemos convertir dicha data a cadena.

Asumamos que tenemos el siguiente objeto:

var dat = {
    nombre: 'Junior',
    apellido: 'Hernandez',
    edad: '[inmencionable]',
    nacionalidad: 'Dominicano',
    residencia: 'Santo Domingo'
};

Convertimos la data a cadena de texto usando JSON.stringify:

var datStr = JSON.stringify(dat);
localStorage.setItem('junidata',datStr);

Luego, parseamos la cadena con JSON.parse para devolverla como un objecto javascript:

var datObj = JSON.parse(localStorage.junidata);
console.log(datObj.nacionalidad); // RESPUESTA: Dominicano

Listo, a partir de ahora podemos guardar toda la data del usuario como un objeto y consultarla desde el mismo navegador, salvaguardando recursos de nuestros servidores. Claro, es importante destacar que los datos sensibles del usuario no pueden ser dejados a la ligera sin ser encriptados, así que mucho cuidado con ese detalle. ;-)