Limite de taille HTML5 localStorage pour les sous-domaines

Les bases de données LocalStorage HTML5 sont généralement limitées en taille – les tailles standard sont de 5 ou 10 Mo par domaine. Ces limites peuvent-elles être contournées par des sous-domaines (par exemple, exemple.com, hack1.example.com et hack2.example.com ont tous leurs propres bases de données de 5 Mo)? Et y a-t-il quelque chose dans la norme qui spécifie si les domaines parents peuvent accéder aux bases de données de leurs enfants? Je ne trouve rien, et je peux voir des arguments pour le faire dans un sens ou dans l’autre, mais il semble qu’il doit y avoir un modèle standard.

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

Une limite essentiellement arbitraire de cinq mégaoctets par origine est recommandée. Les commentaires sur la mise en œuvre sont les bienvenus et seront utilisés pour mettre à jour cette suggestion à l’avenir.

Il mentionne également que:

Les agents utilisateurs doivent se prémunir contre les sites stockant des données à l’origine d’autres sites affiliés, par exemple stocker jusqu’à la limite dans a1.exemple.com, a2.exemple.com, a3.exemple.com, etc., en contournant la limite de stockage principale exemple .

Voici un résultat de test assez détaillé avec de nombreux navigateurs de bureau et mobiles couverts: http://dev-test.nemikor.com/web-storage/support-test/

Ce qui confirme ce rapport de bogue: http://code.google.com/p/chromium/issues/detail?id=58985#c15

Vous pouvez compter sur seulement 2,5 Mo, et non 5 Mo, en fonction de la longueur de chaîne que vous pouvez stocker.

J’ai raté cette question quand j’ai demandé ” Est-ce que 5MB est la limite de facto pour le stockage Web W3C? “, Mais j’ai obtenu la même réponse. Si vous souhaitez plus d’informations, j’ai fait un lien vers certaines limites spécifiques au navigateur dans ma question.

Une meilleure solution consiste à utiliser [HTML5 IndexedDB pour le stockage hors ligne.] 1

Il semble que le remplacement de l’ancien Web SQL (qui semble mal nommé, c’est pour le stockage hors ligne ) est: DB indexé, qui permet le stockage hors ligne et qui est toujours supporté:

IndexedDB est nouveau en HTML5. Les bases de données Web sont hébergées et conservées dans le navigateur de l’utilisateur. En permettant aux développeurs de créer des applications avec des capacités de requête riches, il est envisagé qu’un nouveau type d’applications Web puisse être utilisé en ligne et hors ligne .

Plus d’infos et une application de test sur: http://ido-green.appspot.com/WebSQL-IndexedDB-example/jqm_indexedDB.html

Pour obtenir 50 Mo de code d’utilisation de l’espace de stockage ci-dessous

// 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 resortingeved asynchronously: ldb.get('nameGoesHere', function (value) { console.log('And the value is', value); }); 

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