Saltar al contenido principal

Almacenamiento Web 23.06

Abrir en ChatGPT

El almacenamiento web es un concepto fundamental en el desarrollo web que permite a los sitios web almacenar datos en el lado del cliente. Esto permite que las aplicaciones web guarden el estado, las preferencias y otra información localmente en el navegador del usuario. El almacenamiento web proporciona una manera de persistir datos a través de recargas de página y sesiones de navegador, reduciendo la necesidad de solicitudes repetidas al servidor y habilitando capacidades fuera de línea.

webforJ soporta tres mecanismos para almacenar datos del cliente: Cookies, Almacenamiento de sesión y Almacenamiento local.

Almacenamiento Web en Herramientas de Desarrollo

Puedes ver las claves y valores actuales de cookies, almacenamiento local y almacenamiento de sesión en las herramientas de desarrollador de tu navegador.

Resumen de diferencias​

CaracterísticaCookiesAlmacenamiento de SesiónAlmacenamiento Local
PersistenciaFecha de expiración configurableDuración de la sesión de la páginaPersistente hasta que se elimine explícitamente
Tamaño de Almacenamiento4 KB por cookieAlrededor de 5-10 MBAlrededor de 5-10 MB
Casos de UsoAutenticación de usuario, preferencias, seguimientoDatos temporales, datos de formulariosConfiguraciones persistentes, preferencias del usuario
SeguridadVulnerable a XSS, puede ser asegurado con flagsEliminado al finalizar la sesión, menos riesgoAccesible a través de JavaScript, riesgo potencial

Usando el almacenamiento web​

Las clases CookieStorage, SessionStorage, y LocalStorage en webforJ extienden todas la clase abstracta WebStorage. Para obtener el objeto apropiado, utiliza los métodos estáticos CookieStorage.getCurrent(), SessionStorage.getCurrent(), o LocalStorage.getCurrent(). Para agregar, obtener y eliminar pares clave-valor, usa los métodos add(key, value), get(key), y remove(key).

Cookies​

Las cookies son pequeñas piezas de datos almacenadas en el lado del cliente y enviadas al servidor con cada solicitud HTTP. A menudo se utilizan para recordar sesiones de usuario, preferencias e información de autenticación. Además de los pares clave-valor, las cookies también pueden tener atributos. Para establecer atributos para las cookies, utiliza add(key, value, attributes).

Características clave:​

  • Pueden almacenar datos a través de diferentes dominios
  • Soportan fechas de expiración
  • Tamaño de almacenamiento pequeño, típicamente restringido a 4 KB
  • Se envían con cada solicitud HTTP
  • Pueden tener atributos
Expiración de Cookies

Por defecto, las cookies en webforJ expiran después de 30 días. Puedes cambiar esto con los atributos max-age o expires.

Usando cookies​

El siguiente fragmento de código demuestra el uso del objeto CookieStorage.

// Acceder al almacenamiento de cookies
CookieStorage cookieStorage = CookieStorage.getCurrent();

// Agregar una nueva cookie o actualizar una existente
cookieStorage.add("username", "JohnDoe", "Max-Age=3600; Secure; HttpOnly");

// Acceder a una cookie con una clave dada
String username = cookieStorage.get("username");

// Eliminar una cookie con una clave dada
cookieStorage.remove("username");
Seguridad de las Cookies

Ciertos atributos de las cookies, como Secure y SameSite=None, requieren un contexto seguro usando HTTPS. Estos atributos aseguran que las cookies solo se envíen a través de conexiones seguras, protegiéndolas de ser interceptadas. Para más información, consulta la documentación de MDN sobre la seguridad de cookies.

Casos de uso​

Los siguientes casos de uso son adecuados para la utilización de cookies:

  • Autenticación de Usuario: Almacenar tokens de sesión para mantener a los usuarios conectados.
  • Preferencias: Guardar preferencias de usuario, como configuraciones de tema o idioma.
  • Seguimiento: Recopilar información sobre el comportamiento del usuario para análisis.

Almacenamiento de sesión​

El almacenamiento de sesión guarda datos durante la duración de una sesión de página. Los datos son accesibles solo dentro de la misma sesión y se eliminan cuando se cierra la página o pestaña. Sin embargo, los datos persisten en recargas y restauraciones. El almacenamiento de sesión es mejor para almacenar datos temporales durante una sola sesión de página y mantener el estado a través de diferentes páginas en la misma sesión.

Características clave​

  • Los datos no se envían con cada solicitud HTTP
  • Tamaño de almacenamiento más grande que las cookies
  • Los datos se eliminan cuando se cierra la página o pestaña
  • Los datos no se comparten entre pestañas

Usando el almacenamiento de sesión en webforJ​

El siguiente fragmento de código demuestra el uso del objeto SessionStorage.

// Acceder al almacenamiento de sesión
SessionStorage sessionStorage = SessionStorage.getCurrent();

// Agregar una nueva pareja de almacenamiento de sesión o actualizar una existente
sessionStorage.add("currentPage", "3");

// Acceder a una pareja de almacenamiento de sesión con una clave dada
String currentPage = sessionStorage.get("currentPage");

// Eliminar una pareja de almacenamiento de sesión con una clave dada
sessionStorage.remove("currentPage");

Casos de uso​

Los siguientes casos de uso son adecuados para la utilización del almacenamiento de sesión:

  • Almacenamiento de Datos Temporales: Almacenar datos que solo necesitan persistir mientras el usuario esté en una página o sesión particular.
  • Datos de Formulario: Guardar temporalmente datos de formularios para su uso dentro de la sesión.

Almacenamiento local​

El almacenamiento local guarda datos sin fecha de expiración. Persiste incluso después de cerrar el navegador y puede ser accedido cada vez que el usuario vuelve a visitar el sitio web. El almacenamiento local es mejor para almacenar preferencias del usuario o configuraciones, almacenar en caché datos para mejorar el rendimiento y guardar el estado de la aplicación entre sesiones.

Características clave​

  • Los datos persisten entre sesiones
  • Los datos no se envían con cada solicitud HTTP.
  • Tamaño de almacenamiento más grande que las cookies
  • No es adecuado para datos sensibles
  • Debes gestionar los datos tú mismo, ya que el navegador nunca los elimina automáticamente

Usando el almacenamiento local en webforJ​

El siguiente fragmento de código demuestra el uso del objeto LocalStorage.

// Acceder al almacenamiento local
LocalStorage localStorage = LocalStorage.getCurrent();

// Agregar una nueva pareja de almacenamiento local o actualizar una existente
localStorage.add("theme", "dark");

// Acceder a una pareja de almacenamiento local con una clave dada
String theme = localStorage.get("theme");

// Eliminar una pareja de almacenamiento local con una clave dada
localStorage.remove("theme");

Casos de uso​

Los siguientes casos de uso son adecuados para la utilización del almacenamiento local:

  • Datos Persistentes: Almacenar datos que deben estar disponibles a través de múltiples sesiones.
  • Preferencias: Guardar configuraciones y preferencias del usuario que persisten a lo largo del tiempo.