El almacenamiento web , anteriormente conocido como almacenamiento DOM ( almacenamiento del Modelo de Objetos del Documento ), es una API estándar de JavaScript proporcionada por los navegadores web . Permite a los sitios web almacenar datos persistentes en los dispositivos de los usuarios, de forma similar a las cookies , pero con una capacidad mucho mayor [ 1 ] y sin enviar información en las cabeceras HTTP . [ 2 ] Existen dos tipos principales de almacenamiento web: almacenamiento local y almacenamiento de sesión, que se comportan de forma similar a las cookies persistentes y de sesión, respectivamente. El almacenamiento web está estandarizado por el Consorcio World Wide Web (W3C) [ 3 ] y WHATWG , [ 4 ] y es compatible con todos los navegadores principales.
Características
El almacenamiento web se diferencia de las cookies en algunos aspectos clave.
Objetivo
Las cookies se utilizan para la comunicación con los servidores; se añaden automáticamente a todas las solicitudes y pueden ser accedidas tanto por el servidor como por el cliente. El almacenamiento web se gestiona exclusivamente mediante scripts del lado del cliente . Los datos del almacenamiento web no se transmiten automáticamente al servidor en cada solicitud HTTP, y un servidor web no puede escribir directamente en el almacenamiento web. Sin embargo, cualquiera de estos efectos puede lograrse mediante scripts explícitos del lado del cliente, lo que permite ajustar con precisión la interacción deseada con el servidor.
Tamaño de almacenamiento
Las cookies están limitadas a 4 kilobytes. El almacenamiento web ofrece una capacidad de almacenamiento mucho mayor:
Almacenamiento local y de sesión
El almacenamiento web ofrece dos áreas de almacenamiento diferentes: almacenamiento local y almacenamiento de sesión, que difieren en alcance y duración. Los datos almacenados en el almacenamiento local son por origen (la combinación de protocolo, nombre de host y número de puerto, según se define en la política del mismo origen) . Los datos están disponibles para todos los scripts cargados desde páginas del mismo origen que previamente los almacenó y persisten después de cerrar el navegador. Por lo tanto, el almacenamiento web no sufre los problemas de integridad y confidencialidad débiles de las cookies, descritos en las secciones 8.5 y 8.6 de la RFC 6265. El almacenamiento de sesión es por origen y por instancia (por ventana o por pestaña) y está limitado a la duración de la instancia. El almacenamiento de sesión está diseñado para permitir que diferentes instancias de la misma aplicación web se ejecuten en distintas ventanas sin interferir entre sí, un caso de uso que no está bien soportado por las cookies. [ 10 ]
Interfaz y modelo de datos
El almacenamiento web proporciona una interfaz programática mejor que las cookies porque expone un modelo de datos de matriz asociativa donde tanto las claves como los valores son cadenas de caracteres .
Uso
Los navegadores que admiten almacenamiento web tienen los objetos globales sessionStoragey localStoragese declaran a nivel de ventana. El siguiente código JavaScript se puede usar en estos navegadores para activar el comportamiento de almacenamiento web:
// Almacena el valor en el navegador durante la duración de la sesión sessionStorage.setItem ( " key" , "value" );// Recuperar valor (se elimina cuando se cierra y se vuelve a abrir el navegador) ... alert ( sessionStorage . getItem ( "key" ));// Almacena el valor en el navegador más allá de la duración de la sesión localStorage.setItem ( "key" , "value" );// Recuperar valor (persiste incluso después de cerrar y volver a abrir el navegador) alert ( localStorage . getItem ( "key" ));Solo se pueden almacenar cadenas a través de la API de almacenamiento. [ 11 ] Intentar almacenar un tipo de dato diferente dará como resultado una conversión automática a cadena en la mayoría de los navegadores. Sin embargo, la conversión a JSON permite un almacenamiento eficaz de objetos JavaScript.
// Almacena un objeto en lugar de una cadena localStorage.setItem ( " key" , { name : " value" }); alert ( typeof localStorage.getItem ( 'key' )); // cadena// Almacena un entero en lugar de una cadena localStorage.setItem ( "key" , 1 ); alert ( typeof localStorage.getItem ( " key" )); // cadena// Almacenar un objeto usando JSON localStorage.setItem ( " key" , JSON.stringify ({ name : " value" } )); alert ( JSON.parse ( localStorage.getItem ( " key " ) ). name ); // valorNomenclatura
El borrador del W3C se titula "Almacenamiento web". "Almacenamiento DOM" también ha sido un nombre de uso común, aunque cada vez se usa menos; por ejemplo, los artículos web sobre "Almacenamiento DOM" de los sitios para desarrolladores de Mozilla y Microsoft han sido reemplazados por artículos sobre "Almacenamiento web". [ 12 ] [ 13 ] [ 14 ] [ 15 ]
El término "DOM" en almacenamiento DOM no se refiere literalmente al Modelo de Objeto de Documento . Según el W3C, "el término DOM se utiliza para referirse al conjunto de API disponibles para los scripts en las aplicaciones web, y no implica necesariamente la existencia de un objeto Documento real..." [ 16 ]
Gestión de almacenamiento web
El almacenamiento de objetos de almacenamiento web está habilitado de forma predeterminada en las versiones actuales de todos los navegadores web compatibles. Los proveedores de navegadores ofrecen a los usuarios la posibilidad de habilitar o deshabilitar el almacenamiento web, o de borrar la caché. También existen controles similares sobre el almacenamiento web a través de extensiones de navegador de terceros . Cada navegador almacena los objetos de almacenamiento web de forma diferente.
- Firefox guarda los objetos de almacenamiento web en un archivo SQLite
webappsstore.sqliteubicado en la carpeta de perfil del usuario. [ 17 ] - Google Chrome registra los datos de almacenamiento web en un archivo SQLite en el perfil del usuario. La subcarpeta que contiene este archivo es "
\AppData\Local\Google\Chrome\User Data\Default\Local Storage" en Windows y "~/Library/Application Support/Google/Chrome/Default/Local Storage" en macOS . - El almacenamiento web de Opera
\AppData\Roaming\Opera\Opera\sessions\autosave.winse encuentra en " " o "\AppData\Local\Opera\Opera\pstorage\" dependiendo de la versión de Opera. - El almacenamiento web de Internet Explorer
\AppData\LocalLow\Microsoft\Internet Explorer\DOMStoragees " ". - El almacenamiento web de Safari
LocalStoragese encuentra en una carpeta etiquetada como " " dentro de una carpeta oculta "safari". [ 18 ]
Véase también
Referencias
- 1 2 Dixit, Shwetank (2013-03-05). "Almacenamiento web: almacenamiento de datos del lado del cliente más fácil y potente" . Dev.Opera . Recuperado el 2021-05-14 .
- ↑ Hume, Andy (24-03-2011). "localStorage no son cookies" . andyhume.net . Archivado del original el 02-06-2011 . Consultado el 14-05-2021 .
- ↑ Hickson, Ian, ed. (28-01-2021). "Almacenamiento web (Segunda edición)" . W3C . Grupo de trabajo de la plataforma web . Recuperado el 14-05-2021 .
- ↑ WHATWG. "Estándar HTML § 12 Almacenamiento web" . html.spec.whatwg.org . Consultado el 14 de mayo de 2021 .
- ↑ Kitamura, Eiji (28 de enero de 2014). "Trabajando con cuotas en navegadores móviles: Un informe de investigación sobre el almacenamiento del navegador - HTML5 Rocks" . Archivado del original el 1 de febrero de 2014. Recuperado el 4 de mayo de 2021 .
- ↑ "Cuotas de almacenamiento y criterios de desalojo - API web | MDN" . developer.mozilla.org . 13 de marzo de 2025. Consultado el 28 de abril de 2025.
El almacenamiento web, al que se puede acceder mediante las propiedades localStorage y sessionStorage del objeto window, está limitado a un máximo de 10 MiB de datos en todos los navegadores. Los navegadores pueden almacenar hasta 5 MiB de almacenamiento local y 5 MiB de almacenamiento de sesión por origen.
- ↑ John Resig: Almacenamiento DOM . John Resig, ejohn.org . Consultado el 12 de junio de 2011.
- ↑ michaeln (2013-03-08). "Problema 21680002: Aumentar el límite de window.localstorage de 5M a 10M. - Revisión de código" . Chromium Code Reviews . Consultado el 14 de mayo de 2021 .
- ↑ Microsoft (2016-10-20). "Introducción al almacenamiento web" . Microsoft Docs . Microsoft . Consultado el 14 de mayo de 2021 .
- ↑ W3C: Borrador del estándar de almacenamiento web. Archivado el 1 de febrero de 2011 en Wayback Machine . Dev.w3.org (5 de febrero de 2004). Consultado el 12 de junio de 2011.
- ↑ W3C, 2011 http://dev.w3.org/html5/webstorage/ Archivado el 1 de febrero de 2011 en Wayback Machine
- ↑ "Almacenamiento DOM" . Red de desarrolladores de Mozilla . Archivado del original el 4 de junio de 2011. Consultado el 12 de junio de 2011 .
- ↑ "API de almacenamiento web" . Red de desarrolladores de Mozilla . Consultado el 28 de junio de 2017 .
- ↑ "Introducción al almacenamiento DOM" . Microsoft Developer Network . Archivado del original el 8 de junio de 2011. Consultado el 12 de junio de 2011 .
- ↑ "Introducción al almacenamiento web" . Microsoft Developer Network . Consultado el 28 de junio de 2017 .
- ↑ W3C: Borrador del estándar de almacenamiento web. Archivado el 1 de febrero de 2011 en Wayback Machine . Dev.w3.org (5 de febrero de 2004). Consultado el 12 de junio de 2011.
- ↑ Webappsstore.sqlite kb.mozillazine.org
- ↑ ¿Dónde se almacenan los datos web de Safari? discussions.apple.com. Consultado el 20/10/2022.
Enlaces externos
- HTML Living Standard 11 Almacenamiento web
- W3C: Almacenamiento web
- API de almacenamiento web en la red de desarrolladores de Mozilla
- Opera: Almacenamiento web: almacenamiento de datos del lado del cliente más sencillo y potente
- Almacenamiento local en BlackBerry DevZone
- Estándares del Consorcio World Wide Web
- HTML5
- Privacidad en Internet