Límite de tamaño de almacenamiento local de HTML5 para subdominios

Las bases de datos localStorage de HTML5 generalmente tienen un tamaño limitado: los tamaños estándar son de 5 o 10 MB por dominio. ¿Pueden estos límites ser eludidos por subdominios (por ejemplo, example.com, hack1.example.com y hack2.example.com, todos tienen sus propias bases de datos de 5 MB)? ¿Y hay algo en el estándar que especifique si los dominios principales pueden acceder a las bases de datos de sus hijos? No puedo encontrar nada, y puedo ver argumentos para hacerlo de cualquier manera, pero parece que tiene que haber algún modelo estándar.

Desde http://dev.w3.org/html5/webstorage/#disk-space

Se recomienda un límite mayoritariamente arbitrario de cinco megabytes por origen. Los comentarios sobre la implementación son bienvenidos y se usarán para actualizar esta sugerencia en el futuro.

También menciona que:

Los agentes de usuario deben protegerse contra los sitios que almacenan datos en los orígenes de otros sitios afiliados, por ejemplo, almacenar hasta el límite en a1.example.com, a2.example.com, a3.example.com, etc., eludiendo el límite de almacenamiento de example.com principal .

Este es un resultado de prueba bastante detallado con una gran cantidad de navegadores de escritorio y dispositivos móviles cubiertos: http://dev-test.nemikor.com/web-storage/support-test/

Lo que confirma este informe de error: http://code.google.com/p/chromium/issues/detail?id=58985#c15

Puede confiar solo en 2.5MB, no en 5MB, según la longitud de la cadena que puede almacenar.

Me perdí esta pregunta cuando pregunté ” ¿Es 5MB el límite de facto para W3C Web Storage? “, Pero obtuve básicamente la misma respuesta. Si desea obtener más información, hice un enlace a algunos límites específicos del navegador en mi pregunta.

Una mejor solución es usar el [HTML5 IndexedDB para el almacenamiento fuera de línea]. 1

Parece que el reemplazo del antiguo SQL web (que parece ser mal llamado b / c es para el almacenamiento fuera de línea ) es: base de datos indexada, que permite el almacenamiento fuera de línea y aún se admite:

IndexedDB es nuevo en HTML5. Las bases de datos web se alojan y persisten dentro del navegador de un usuario. Al permitir que los desarrolladores creen aplicaciones con amplias capacidades de consulta, se prevé que surgirá una nueva clase de aplicaciones web que tendrán la capacidad de trabajar en línea y fuera de línea .

Más información y una aplicación de prueba en: http://ido-green.appspot.com/WebSQL-IndexedDB-example/jqm_indexedDB.html

Para obtener 50 MB de espacio de almacenamiento, use el siguiente código

// 1. paste this line in your code !function(){function e(t,o){return n?void(n.transaction("s").objectStore("s").get(t).onsuccess=function(e){var t=e.target.result&&e.target.result.v||null;o(t)}):void setTimeout(function(){e(t,o)},100)}var t=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;if(!t)return void console.error("indexDB not supported");var n,o={k:"",v:""},r=t.open("d2",1);r.onsuccess=function(e){n=this.result},r.onerror=function(e){console.error("indexedDB request error"),console.log(e)},r.onupgradeneeded=function(e){n=null;var t=e.target.result.createObjectStore("s",{keyPath:"k"});t.transaction.oncomplete=function(e){n=e.target.db}},window.ldb={get:e,set:function(e,t){ok=e,ov=t,n.transaction("s","readwrite").objectStore("s").put(o)}}}(); // 2. Setting values ldb.set('nameGoesHere', 'value goes here'); // 3. Getting values - callback is required because the data is being retrieved asynchronously: ldb.get('nameGoesHere', function (value) { console.log('And the value is', value); }); 

fuente https://github.com/DVLP/localStorageDB